Skip to main content

Crate ferriskey_sdk

Crate ferriskey_sdk 

Source
Expand description

FerrisKey Rust SDK

§Design Philosophy

This SDK is built with a focus on:

  1. Zero Custom Macros: All abstractions use native Rust generics, traits, and type-state patterns. No procedural macros are introduced.

  2. Type-Driven Design: Invalid states are unrepresentable at compile time. The builder pattern uses phantom types to track configuration state.

  3. tower::Service Integration: The transport layer is built on tower::Service, enabling seamless composition of middleware (retry, timeout, rate-limiting).

  4. 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.
CartItem
A line item in the shopping cart.
CheckoutResult
The result of checking out a cart.
DecodedResponse
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.