This commit is contained in:
Gvidas Juknevičius 2024-06-29 18:42:06 +03:00
parent 83b9d04c7c
commit 644bb4dbec
Signed by: MCorange
GPG Key ID: 12B1346D720B7FBB
3 changed files with 37 additions and 37 deletions

View File

@ -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;

View File

@ -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())
}

View File

@ -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())