diff --git a/src/web/routes/api/webhooks/github/events/mod.rs b/src/web/routes/api/webhooks/github/events/mod.rs index cf2b342..55638f1 100644 --- a/src/web/routes/api/webhooks/github/events/mod.rs +++ b/src/web/routes/api/webhooks/github/events/mod.rs @@ -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>, body: ReleaseEvent, raw_body: String) -> Result { - - 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()) -} \ No newline at end of file +pub mod release; \ No newline at end of file diff --git a/src/web/routes/api/webhooks/github/events/release.rs b/src/web/routes/api/webhooks/github/events/release.rs index e69de29..c0561a8 100644 --- a/src/web/routes/api/webhooks/github/events/release.rs +++ b/src/web/routes/api/webhooks/github/events/release.rs @@ -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>, body: ReleaseEvent, raw_body: String) -> Result { + + 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()) +} \ No newline at end of file diff --git a/src/web/routes/api/webhooks/github/mod.rs b/src/web/routes/api/webhooks/github/mod.rs index 9f6f7cd..690774d 100644 --- a/src/web/routes/api/webhooks/github/mod.rs +++ b/src/web/routes/api/webhooks/github/mod.rs @@ -52,7 +52,7 @@ pub async fn handler(req: HttpRequest, token: web::Path, 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())