Skip to main content

ServiceHandler

Trait ServiceHandler 

Source
pub trait ServiceHandler: Send + Sync {
    // Required methods
    fn service_name(&self) -> &str;
    fn protocol(&self) -> Protocol;
    fn handle<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        operation: &'life1 str,
        input: Value,
        ctx: &'life2 RequestContext,
    ) -> Pin<Box<dyn Future<Output = Result<Value, AwsError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;

    // Provided methods
    fn signing_name(&self) -> &str { ... }
    fn routes(&self) -> Vec<RouteDefinition> { ... }
    fn snapshot(&self) -> Option<Vec<u8>> { ... }
    fn restore(&self, _data: &[u8]) -> Result<(), String> { ... }
    fn iam_action(&self, _operation: &str) -> Option<String> { ... }
    fn iam_resource(
        &self,
        _operation: &str,
        _input: &Value,
        _ctx: &RequestContext,
    ) -> Option<String> { ... }
}
Expand description

Trait that every AWS service crate must implement.

Each service (S3, SQS, DynamoDB, etc.) implements this trait in its own crate. The main awsim binary registers all service handlers with the gateway router.

Required Methods§

Source

fn service_name(&self) -> &str

The AWS service name (e.g., “s3”, “sqs”, “dynamodb”).

Source

fn protocol(&self) -> Protocol

The primary protocol this service uses.

Source

fn handle<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, operation: &'life1 str, input: Value, ctx: &'life2 RequestContext, ) -> Pin<Box<dyn Future<Output = Result<Value, AwsError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Handle an AWS API operation.

Provided Methods§

Source

fn signing_name(&self) -> &str

The signing name used in SigV4 Authorization headers. Usually the same as service_name, but not always.

Source

fn routes(&self) -> Vec<RouteDefinition>

Route definitions for REST-protocol services. Not needed for RPC-style protocols (awsJson, awsQuery).

Source

fn snapshot(&self) -> Option<Vec<u8>>

Serialize the service’s state to bytes for persistence.

Return None if this service does not support snapshots.

Source

fn restore(&self, _data: &[u8]) -> Result<(), String>

Restore the service’s state from a previous snapshot.

The default implementation is a no-op and always succeeds.

Source

fn iam_action(&self, _operation: &str) -> Option<String>

Source

fn iam_resource( &self, _operation: &str, _input: &Value, _ctx: &RequestContext, ) -> Option<String>

Implementors§