Use ForgejoHook::try_from_event
Signed-off-by: pep <pep@bouah.net>
This commit is contained in:
parent
222ed138e4
commit
b97b5373ba
2 changed files with 19 additions and 3 deletions
|
|
@ -18,6 +18,7 @@ use std::error::Error as StdError;
|
|||
use std::io::Error as IoError;
|
||||
use std::str::Utf8Error;
|
||||
|
||||
use forgejo_hooks::Error as FjError;
|
||||
use hex::FromHexError;
|
||||
use hmac::digest::InvalidLength as HmacInvalidLength;
|
||||
use hyper::StatusCode;
|
||||
|
|
@ -31,6 +32,7 @@ pub enum Error {
|
|||
InvalidSignature,
|
||||
InvalidRequest,
|
||||
UnsupportedHookConversion,
|
||||
ForgejoHooks(FjError),
|
||||
Hex(FromHexError),
|
||||
Hmac(HmacInvalidLength),
|
||||
Hyper(hyper::Error),
|
||||
|
|
@ -68,6 +70,7 @@ impl std::fmt::Display for Error {
|
|||
Error::InvalidSignature => write!(fmt, "the signature is invalid"),
|
||||
Error::InvalidRequest => write!(fmt, "the request is invalid"),
|
||||
Error::UnsupportedHookConversion => write!(fmt, "Unable to convert hook"),
|
||||
Error::ForgejoHooks(e) => write!(fmt, "forgejo-hooks error: {}", e),
|
||||
Error::Hex(e) => write!(fmt, "hex error: {}", e),
|
||||
Error::Hmac(e) => write!(fmt, "hmac error: {}", e),
|
||||
Error::Hyper(e) => write!(fmt, "hyper error: {}", e),
|
||||
|
|
@ -81,6 +84,12 @@ impl std::fmt::Display for Error {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<FjError> for Error {
|
||||
fn from(err: FjError) -> Error {
|
||||
Error::ForgejoHooks(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<FromHexError> for Error {
|
||||
fn from(err: FromHexError) -> Error {
|
||||
Error::Hex(err)
|
||||
|
|
|
|||
13
src/web.rs
13
src/web.rs
|
|
@ -89,9 +89,16 @@ async fn hooks_inner(req: Request<Incoming>, secret: &str) -> Result<Hook, Error
|
|||
}
|
||||
|
||||
trace!("Payload: {:?}", std::str::from_utf8(&payload));
|
||||
let hook: ForgejoHook = serde_json::from_slice(&payload[..])?;
|
||||
debug!("Found Forgejo payload.");
|
||||
return Ok(Hook::try_from(hook)?);
|
||||
trace!("X-Forgejo-Event: {:?}", headers.get("X-Forgejo-Event"));
|
||||
if let Some(event) = headers.get("X-Forgejo-Event") {
|
||||
let hook: ForgejoHook =
|
||||
ForgejoHook::try_from_event(event.to_str().unwrap(), &payload[..])?;
|
||||
debug!("Found Forgejo payload.");
|
||||
return Ok(Hook::try_from(hook)?);
|
||||
} else {
|
||||
debug!("Missing X-Forgejo-Event");
|
||||
return Err(Error::InvalidRequest);
|
||||
}
|
||||
}
|
||||
|
||||
// No match found for the payload
|
||||
|
|
|
|||
Loading…
Reference in a new issue