//! Utilities for using this library with actix-web framework pub mod inbox; #[doc(hidden)] pub mod middleware; use crate::{ config::Data, error::Error, http_signatures::{self, verify_body_hash}, traits::{Actor, Object}, }; use actix_web::{web::Bytes, HttpRequest}; use serde::Deserialize; /// Checks whether the request is signed by an actor of type A, and returns /// the actor in question if a valid signature is found. pub async fn signing_actor( request: &HttpRequest, body: Option, data: &Data<::DataType>, ) -> Result::Error> where A: Object + Actor, ::Error: From, for<'de2> ::Kind: Deserialize<'de2>, { verify_body_hash(request.headers().get("Digest"), &body.unwrap_or_default())?; http_signatures::signing_actor(request.headers(), request.method(), request.uri(), data).await }