mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 09:34:04 +00:00 
			
		
		
		
	Improve body parsing
This commit is contained in:
		@@ -7,12 +7,12 @@ use crate::controllers::routes::Method::{GET, POST};
 | 
			
		||||
use crate::data::http_request_handler::{HttpRequestHandler, RequestValue};
 | 
			
		||||
use actix_web::dev::{PayloadStream, Payload, Decompress};
 | 
			
		||||
use actix_web::web::{BytesMut};
 | 
			
		||||
use futures::future::{ok, LocalBoxFuture, err};
 | 
			
		||||
use futures::{FutureExt, StreamExt, TryFutureExt};
 | 
			
		||||
use actix_web::error::{PayloadError, ErrorBadRequest};
 | 
			
		||||
use std::error::Error;
 | 
			
		||||
use futures::future::{LocalBoxFuture};
 | 
			
		||||
use futures::{FutureExt, StreamExt};
 | 
			
		||||
use actix_web::error::{ErrorBadRequest};
 | 
			
		||||
use encoding_rs::UTF_8;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
use percent_encoding::{percent_decode_str};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/// Main server functions
 | 
			
		||||
@@ -87,8 +87,8 @@ impl FromRequest for CustomRequest {
 | 
			
		||||
 | 
			
		||||
                        // Add the value to the body
 | 
			
		||||
                        body_args.insert(
 | 
			
		||||
                            args[0].to_string(),
 | 
			
		||||
                            RequestValue::string(args[1].to_string())
 | 
			
		||||
                            percent_decode_str(args[0]).decode_utf8_lossy().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
 | 
			
		||||
        Err(e) => {
 | 
			
		||||
 | 
			
		||||
            let err_msg= e.to_string();
 | 
			
		||||
 | 
			
		||||
            if !request.has_response() {
 | 
			
		||||
                request.internal_error(e).unwrap_err();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            println!("{} - {} - {}",
 | 
			
		||||
                     request.response_status_code(),
 | 
			
		||||
                     request.request_path(),
 | 
			
		||||
                     err_msg
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Set default success response if required
 | 
			
		||||
@@ -158,6 +167,8 @@ async fn process_request(custom_req: CustomRequest) -> HttpResponse {
 | 
			
		||||
            if !request.has_response() {
 | 
			
		||||
                request.success("Success").unwrap()
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            println!("{} - {}", request.response_status_code(), request.request_path());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -51,6 +51,11 @@ impl HttpRequestHandler {
 | 
			
		||||
        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
 | 
			
		||||
    pub fn response(self) -> HttpResponse {
 | 
			
		||||
        self.response.unwrap()
 | 
			
		||||
@@ -71,6 +76,10 @@ impl HttpRequestHandler {
 | 
			
		||||
        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
 | 
			
		||||
    pub fn check_client_token(&mut self) -> ResultExecError<()> {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user