# Starling Webhooks Rust types for handling data from Starling Bank's webhook API. ## Usage The following example shows a basic HTTP server built with `hyper` and `tokio` that deserializes payload data at `/feed-item` into a `WebhookFeedItem` type and displays it in the debug format. All other routes return 404s. The source for this example can be found in `/examples/hyper-server` with the dependencies and versions. ```rust use std::convert::Infallible; use std::net::{Ipv4Addr, SocketAddrV4}; use hyper::service::{make_service_fn, service_fn}; use hyper::{Body, Request, Response, Server}; use starling_webhooks::WebhookFeedItem; async fn router(req: Request) -> Result, Infallible> { let response = match req.uri().path() { "/feed-item" => handle_feed_item(req).await, _ => Response::builder().status(404).body(Body::empty()).unwrap(), }; Ok(response) } async fn handle_feed_item(mut req: Request) -> Response { // Get the body itself let body = hyper::body::to_bytes(req.body_mut()) .await .expect("Failed to get the body"); // Deserialize it and display it let webhook: WebhookFeedItem = serde_json::from_slice(&body).expect("Failed to deserialize the content"); dbg!(&webhook); Response::default() } #[tokio::main] async fn main() { let service = make_service_fn(|_| async { Ok::<_, Infallible>(service_fn(router)) }); let addr = SocketAddrV4::new(Ipv4Addr::LOCALHOST, 4000).into(); let server = Server::bind(&addr).serve(service); server.await.expect("Failed to handle errors"); } ```