Skip to main content

Module client

Module client 

Source
Expand description

SDK client entrypoint and request preparation helpers.

§Design Philosophy

This module implements a TypeState pattern for the SDK builder, ensuring that the transport layer is always configured before the SDK can be used. The FerriskeySdk<T> type is parameterized by the transport, making invalid states unrepresentable at compile time.

§Architecture

FerriskeySdkBuilder<Unconfigured>
    │
    ▼ .transport(transport)
FerriskeySdkBuilder<Configured<T>>
    │
    ▼ .build()
FerriskeySdk<T>

§tower::Service Integration

The SDK accepts any Transport (which is a blanket impl over tower::Service<SdkRequest>), enabling middleware composition:

use ferriskey_sdk::{AuthStrategy, FerriskeySdk, HpxTransport, SdkConfig};

let config = SdkConfig::new("https://api.example.com", AuthStrategy::None);
let transport = HpxTransport::default();

let sdk = FerriskeySdk::builder(config).transport(transport).build();

Structs§

Configured
TypeState: transport has been configured.
FerriskeySdk
FerrisKey SDK entrypoint parameterized by a transport implementation.
FerriskeySdkBuilder
Typed builder for FerriskeySdk with compile-time validation.
OperationCall
Generated operation entrypoint bound to a specific SDK instance.
OperationInput
Caller-provided request input for a generated FerrisKey operation.
OperationInputBuilder
Fluent builder for OperationInput.
TagClient
Tag-scoped SDK view over the generated operation registry.
Unconfigured
TypeState: transport has not been configured yet.

Traits§

SdkExt
Extension trait for convenient SDK construction.