ferrokinesis 0.1.0

A local AWS Kinesis mock server for testing, written in Rust
Documentation
use crate::constants;
use crate::error::KinesisErrorResponse;
use crate::store::Store;
use serde_json::Value;

pub async fn execute(store: &Store, data: Value) -> Result<Option<Value>, KinesisErrorResponse> {
    let stream_arn = data[constants::STREAM_ARN].as_str().unwrap_or("");
    let stream_mode = data[constants::STREAM_MODE_DETAILS]["StreamMode"]
        .as_str()
        .unwrap_or("");

    if stream_mode != "PROVISIONED" && stream_mode != "ON_DEMAND" {
        return Err(KinesisErrorResponse::client_error(
            constants::INVALID_ARGUMENT,
            Some("StreamMode must be PROVISIONED or ON_DEMAND."),
        ));
    }

    let stream_name = store.stream_name_from_arn(stream_arn).unwrap_or_default();

    store
        .update_stream(&stream_name, |stream| {
            stream.stream_mode_details.stream_mode = stream_mode.to_string();
            Ok(())
        })
        .await?;

    Ok(None)
}