webhooks
This commit is contained in:
parent
83b9d04c7c
commit
644bb4dbec
|
@ -1,36 +1 @@
|
|||
use std::{borrow::BorrowMut, sync::Mutex};
|
||||
|
||||
use actix_web::{web::Data, HttpResponse, HttpResponseBuilder, Result};
|
||||
|
||||
use crate::database::{models, Database};
|
||||
|
||||
use super::types::ReleaseEvent;
|
||||
|
||||
pub async fn release_handler(db: Data<Mutex<Database>>, body: ReleaseEvent, raw_body: String) -> Result<HttpResponseBuilder> {
|
||||
|
||||
if body.action != "released" {
|
||||
return Ok(HttpResponse::Ok());
|
||||
}
|
||||
|
||||
let title = format!("(New release {}:{}) {}", body.repository.full_name, body.release.tag_name, body.release.name.unwrap_or("No title provided".into()));
|
||||
let origin_url = body.repository.html_url.clone();
|
||||
let descr = body.release.body.unwrap_or("No body provided".into());
|
||||
let img_url = body.repository.owner.avatar_url.clone();
|
||||
|
||||
let res = models::posts::Post::create_new(
|
||||
db.lock().unwrap().borrow_mut(),
|
||||
title,
|
||||
descr,
|
||||
img_url,
|
||||
origin_url,
|
||||
raw_body
|
||||
).await;
|
||||
|
||||
if let Err(e) = res {
|
||||
log::error!("{e}");
|
||||
return Ok(HttpResponse::InternalServerError());
|
||||
}
|
||||
|
||||
|
||||
Ok(HttpResponse::Ok())
|
||||
}
|
||||
pub mod release;
|
|
@ -0,0 +1,35 @@
|
|||
use std::{borrow::BorrowMut, sync::Mutex};
|
||||
|
||||
use actix_web::{web::Data, HttpResponse, HttpResponseBuilder, Result};
|
||||
|
||||
use crate::{database::{models, Database}, web::routes::api::webhooks::github::types::ReleaseEvent};
|
||||
|
||||
|
||||
pub async fn release_handler(db: Data<Mutex<Database>>, body: ReleaseEvent, raw_body: String) -> Result<HttpResponseBuilder> {
|
||||
|
||||
if body.action != "released" {
|
||||
return Ok(HttpResponse::Ok());
|
||||
}
|
||||
|
||||
let title = format!("Release {}: {}", body.repository.full_name, body.release.name.unwrap_or("No title provided".into()));
|
||||
let origin_url = body.repository.html_url.clone();
|
||||
let descr = body.release.body.unwrap_or("No body provided".into());
|
||||
let img_url = body.repository.owner.avatar_url.clone();
|
||||
|
||||
let res = models::posts::Post::create_new(
|
||||
db.lock().unwrap().borrow_mut(),
|
||||
title,
|
||||
descr,
|
||||
img_url,
|
||||
origin_url,
|
||||
raw_body
|
||||
).await;
|
||||
|
||||
if let Err(e) = res {
|
||||
log::error!("{e}");
|
||||
return Ok(HttpResponse::InternalServerError());
|
||||
}
|
||||
|
||||
|
||||
Ok(HttpResponse::Ok())
|
||||
}
|
|
@ -52,7 +52,7 @@ pub async fn handler(req: HttpRequest, token: web::Path<String>, body: Bytes, db
|
|||
};
|
||||
|
||||
match event {
|
||||
types::Event::Release(body) => events::release_handler(db, body, json).await,
|
||||
types::Event::Release(body) => events::release::release_handler(db, body, json).await,
|
||||
_ => {
|
||||
// dbg!(json);
|
||||
Ok(HttpResponse::Ok())
|
||||
|
|
Loading…
Reference in New Issue
Block a user