Expand description
FerrisKey Rust SDK
§Design Philosophy
This SDK is built with a focus on:
-
Zero Custom Macros: All abstractions use native Rust generics, traits, and type-state patterns. No procedural macros are introduced.
-
Type-Driven Design: Invalid states are unrepresentable at compile time. The builder pattern uses phantom types to track configuration state.
-
tower::Service Integration: The transport layer is built on
tower::Service, enabling seamless composition of middleware (retry, timeout, rate-limiting). -
Extension Traits: Functionality is organized via extension traits, allowing opt-in features without bloating the core API.
§Quick Start
use ferriskey_sdk::prelude::*;
// Configure the SDK
let config = SdkConfig::builder("https://api.ferriskey.com")
.auth(AuthStrategy::Bearer("your-token".into()))
.build();
// Create SDK with transport
let sdk = FerriskeySdk::builder(config).transport(HpxTransport::default()).build();
// Execute operations
let input = OperationInput::builder().path_param("realm", "master").build();
let response = sdk.execute_operation("getRealm", input).await?;§Middleware Composition
use ferriskey_sdk::{AuthStrategy, FerriskeySdk, HpxTransport, SdkConfig};
let config = SdkConfig::builder("https://api.ferriskey.com")
.auth(AuthStrategy::Bearer("your-token".into()))
.build();
let transport = HpxTransport::default();
let sdk = FerriskeySdk::builder(config).transport(transport).build();Re-exports§
pub use client::Configured;pub use client::FerriskeySdk;pub use client::FerriskeySdkBuilder;pub use client::OperationCall;pub use client::OperationInput;pub use client::OperationInputBuilder;pub use client::SdkExt;pub use client::TagClient;pub use client::Unconfigured;pub use config::AuthStrategy;pub use config::AuthStrategyExt;pub use config::BaseUrlSet;pub use config::SdkConfig;pub use config::SdkConfigBuilder;pub use error::SdkError;pub use error::TransportError;pub use generated::OPERATION_COUNT;pub use generated::OPERATION_DESCRIPTORS;pub use generated::PATH_COUNT;pub use generated::SCHEMA_COUNT;pub use generated::TAG_NAMES;pub use transport::HpxTransport;pub use transport::MethodSet;pub use transport::PathSet;pub use transport::SdkRequest;pub use transport::SdkRequestBuilder;pub use transport::SdkResponse;pub use transport::Transport;pub use transport::TransportExt;pub use tower;
Modules§
- cli
- Descriptor-driven CLI helpers shared by the FerrisKey binary and tests.
- client
- SDK client entrypoint and request preparation helpers.
- config
- SDK configuration primitives.
- contract
- Build-time contract normalization and registry helpers.
- error
- Error types for the FerrisKey SDK transport layer.
- generated
- Generated contract metadata derived from the FerrisKey OpenAPI document.
- prelude
- Re-exports commonly used items.
- transport
- Transport seam and HTTP request/response types for the FerrisKey SDK.
Structs§
- Cart
- A shopping cart.
- Cart
Item - A line item in the shopping cart.
- Checkout
Result - The result of checking out a cart.
- Decoded
Response - Decoded response payload returned by the generic SDK pipeline.
- Order
- An order created from checkout.
Functions§
- checkout_
cart - Creates an order from the provided items and clears the cart.
- greeting
- Builds a temporary greeting string for the CLI scaffold.