From b8246f0fd81c2012d7f6f284f837294d1e348b15 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Sun, 11 Dec 2022 20:25:42 +0530 Subject: [PATCH] feat: restructure events schema for cleaner serialization --- env/libconductor/src/event_types.rs | 24 +++++++++++++----------- src/api/v1/webhook.rs | 9 +++------ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/env/libconductor/src/event_types.rs b/env/libconductor/src/event_types.rs index 0232912..5e63bdf 100644 --- a/env/libconductor/src/event_types.rs +++ b/env/libconductor/src/event_types.rs @@ -14,20 +14,22 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -use libconfig::Config as LibCOnfig; +use libconfig::Config as LibConfig; use serde::{Deserialize, Serialize}; -#[derive(Deserialize, Serialize, Debug, PartialEq, Eq, Clone)] -pub struct NewSite { - pub path: String, - pub branch: String, - pub hostname: String, -} - #[derive(Deserialize, Serialize, Debug, PartialEq, Eq, Clone)] #[serde(untagged)] pub enum EventType { - NewSite(NewSite), - DeleteSite(String), - Config(LibCOnfig), + NewSite { + path: String, + branch: String, + hostname: String, + }, + DeleteSite { + hostname: String, + }, + + Config { + data: LibConfig, + }, } diff --git a/src/api/v1/webhook.rs b/src/api/v1/webhook.rs index 384f3c8..f1c8ffd 100644 --- a/src/api/v1/webhook.rs +++ b/src/api/v1/webhook.rs @@ -56,10 +56,8 @@ async fn post_event(ctx: AppCtx, payload: web::Json) -> ServiceResult #[cfg(test)] pub mod tests { - use actix_web::{http::StatusCode, test, App}; - use libconductor::NewSite; - use super::*; + use actix_web::{http::StatusCode, test, App}; #[actix_rt::test] async fn submit_works() { @@ -78,12 +76,11 @@ pub mod tests { base64::encode(format!("{}:{}", creds.username.clone(), creds.password)) ); - let msg = NewSite { + let msg = EventType::NewSite { hostname: "demo.librepages.org".into(), branch: "librepages".into(), path: "/tmp/librepages".into(), }; - let new_hostname = EventType::NewSite(msg); // upload json let upload_json = test::call_service( @@ -91,7 +88,7 @@ pub mod tests { test::TestRequest::post() .append_header((actix_web::http::header::AUTHORIZATION, auth.clone())) .uri(API_V1_ROUTES.webhook.post_event) - .set_json(&new_hostname) + .set_json(&msg) .to_request(), ) .await;