From a13bae2f394011d7a4d5abdda13b862d036857e4 Mon Sep 17 00:00:00 2001 From: Jai A Date: Wed, 10 Mar 2021 20:20:37 -0700 Subject: [PATCH] Fix report create route --- src/models/reports.rs | 1 + src/routes/reports.rs | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/models/reports.rs b/src/models/reports.rs index e0932a5b..c9f76b2b 100644 --- a/src/models/reports.rs +++ b/src/models/reports.rs @@ -20,6 +20,7 @@ pub struct Report { } #[derive(Serialize, Deserialize, Clone)] +#[serde(rename_all = "kebab-case")] pub enum ItemType { Mod, Version, diff --git a/src/routes/reports.rs b/src/routes/reports.rs index 14019492..fad080cd 100644 --- a/src/routes/reports.rs +++ b/src/routes/reports.rs @@ -3,6 +3,7 @@ use crate::models::ids::{ModId, UserId, VersionId}; use crate::models::reports::{ItemType, Report}; use crate::routes::ApiError; use actix_web::{delete, get, post, web, HttpRequest, HttpResponse}; +use futures::StreamExt; use serde::Deserialize; use sqlx::PgPool; @@ -18,7 +19,7 @@ pub struct CreateReport { pub async fn report_create( req: HttpRequest, pool: web::Data, - new_report: web::Json, + mut body: web::Payload, ) -> Result { let mut transaction = pool .begin() @@ -27,6 +28,14 @@ pub async fn report_create( let current_user = get_user_from_headers(req.headers(), &mut *transaction).await?; + let mut bytes = web::BytesMut::new(); + while let Some(item) = body.next().await { + bytes.extend_from_slice(&item.map_err(|_| { + ApiError::InvalidInputError("Error while parsing request payload!".to_string()) + })?); + } + let new_report: CreateReport = serde_json::from_slice(bytes.as_ref())?; + let id = crate::database::models::generate_report_id(&mut transaction).await?; let report_type = crate::database::models::categories::ReportType::get_id( &*new_report.report_type,