mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-22 21:39:21 +00:00
Improve body parsing
This commit is contained in:
parent
7c18f19674
commit
4b12de6e50
@ -7,12 +7,12 @@ use crate::controllers::routes::Method::{GET, POST};
|
|||||||
use crate::data::http_request_handler::{HttpRequestHandler, RequestValue};
|
use crate::data::http_request_handler::{HttpRequestHandler, RequestValue};
|
||||||
use actix_web::dev::{PayloadStream, Payload, Decompress};
|
use actix_web::dev::{PayloadStream, Payload, Decompress};
|
||||||
use actix_web::web::{BytesMut};
|
use actix_web::web::{BytesMut};
|
||||||
use futures::future::{ok, LocalBoxFuture, err};
|
use futures::future::{LocalBoxFuture};
|
||||||
use futures::{FutureExt, StreamExt, TryFutureExt};
|
use futures::{FutureExt, StreamExt};
|
||||||
use actix_web::error::{PayloadError, ErrorBadRequest};
|
use actix_web::error::{ErrorBadRequest};
|
||||||
use std::error::Error;
|
|
||||||
use encoding_rs::UTF_8;
|
use encoding_rs::UTF_8;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use percent_encoding::{percent_decode_str};
|
||||||
|
|
||||||
|
|
||||||
/// Main server functions
|
/// Main server functions
|
||||||
@ -87,8 +87,8 @@ impl FromRequest for CustomRequest {
|
|||||||
|
|
||||||
// Add the value to the body
|
// Add the value to the body
|
||||||
body_args.insert(
|
body_args.insert(
|
||||||
args[0].to_string(),
|
percent_decode_str(args[0]).decode_utf8_lossy().to_string(),
|
||||||
RequestValue::string(args[1].to_string())
|
RequestValue::string(percent_decode_str(args[1]).decode_utf8_lossy().to_string())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,9 +148,18 @@ async fn process_request(custom_req: CustomRequest) -> HttpResponse {
|
|||||||
|
|
||||||
// Set default error response if required
|
// Set default error response if required
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
|
||||||
|
let err_msg= e.to_string();
|
||||||
|
|
||||||
if !request.has_response() {
|
if !request.has_response() {
|
||||||
request.internal_error(e).unwrap_err();
|
request.internal_error(e).unwrap_err();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println!("{} - {} - {}",
|
||||||
|
request.response_status_code(),
|
||||||
|
request.request_path(),
|
||||||
|
err_msg
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set default success response if required
|
// Set default success response if required
|
||||||
@ -158,6 +167,8 @@ async fn process_request(custom_req: CustomRequest) -> HttpResponse {
|
|||||||
if !request.has_response() {
|
if !request.has_response() {
|
||||||
request.success("Success").unwrap()
|
request.success("Success").unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println!("{} - {}", request.response_status_code(), request.request_path());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,6 +51,11 @@ impl HttpRequestHandler {
|
|||||||
self.response.is_some()
|
self.response.is_some()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the response status code, eg. 200 or 404
|
||||||
|
pub fn response_status_code(&self) -> u16 {
|
||||||
|
self.response.as_ref().unwrap().status().as_u16()
|
||||||
|
}
|
||||||
|
|
||||||
/// Take the response from this struct
|
/// Take the response from this struct
|
||||||
pub fn response(self) -> HttpResponse {
|
pub fn response(self) -> HttpResponse {
|
||||||
self.response.unwrap()
|
self.response.unwrap()
|
||||||
@ -71,6 +76,10 @@ impl HttpRequestHandler {
|
|||||||
Err(Box::try_from(actix_web::error::ErrorInternalServerError(error)).unwrap())
|
Err(Box::try_from(actix_web::error::ErrorInternalServerError(error)).unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the path of the request
|
||||||
|
pub fn request_path(&self) -> String {
|
||||||
|
self.request.path().to_string()
|
||||||
|
}
|
||||||
|
|
||||||
/// Check login tokens
|
/// Check login tokens
|
||||||
pub fn check_client_token(&mut self) -> ResultExecError<()> {
|
pub fn check_client_token(&mut self) -> ResultExecError<()> {
|
||||||
|
Loading…
Reference in New Issue
Block a user