We built this library to simplify building applications that use AWS API Gateway as a proxy for AWS Lambda.
This library has opinions, strong ones, very possibly not your own. Our design priorities here are simple:
This wrapper turns this
impl Handler<ApiGatewayProxyRequest, ApiGatewayProxyResponse, HandlerError> for App {
fn run(&mut self, req: ApiGatewayProxyRequest, _ctx: Context) -> Result<ApiGatewayProxyResponse, HandlerError> {
match some_function(req) {
Ok(response) => {
ApiGatewayProxyResponse {
status_code: 200,
headers: hashmap!(String::from("Content-Type") => String::from("application/json")),
multi_value_headers: HashMap::new(),
body: Some(response),
is_base64_encoded: None,
}
},
Err(e) => {
ApiGatewayProxyResponse {
status_code: 400,
headers: hashmap!(String::from("Content-Type") => String::from("application/json")),
multi_value_headers: HashMap::new(),
body: Some(e.message),
is_base64_encoded: None,
}
}
}
}
}
into this
impl SrvrlsApplication for App {
fn handle(&mut self, event: SrvrlsRequest) -> Result<SrvrlsResponse, SrvrlsError> {
let response = some_function?;
Ok(SrvrlsResponse::ok(response))
}
}