Moving option parameters to the query string
Large payloads will remain the body as those are typically required for post endpoints such as /message/send
This commit is contained in:
		
							parent
							
								
									286a77d9ac
								
							
						
					
					
						commit
						16276c97e0
					
				@ -17,7 +17,7 @@ use db::{
 | 
			
		||||
use crate::qs_param;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pub async fn new_admin(p: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn new_admin(p: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * @requires: owner level permission as regular admins can have conflict of interests
 | 
			
		||||
     * @user param: "target-id": Number
 | 
			
		||||
@ -37,7 +37,7 @@ pub async fn new_admin(p: &Pool, response: &mut Response<Body>, params: HashMap<
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pub async fn set_permissions(p: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn set_permissions(p: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    // @requiresL: admin level permissions, admins can't touch other admins
 | 
			
		||||
    let target_uid = qs_param!(params, "id", u64);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -129,13 +129,13 @@ async fn valid_jwt(p: &Pool, token: &str)  -> AuthReason {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn login_params_from_qs<'value>(params: &HashMap<&str, &'value str>) 
 | 
			
		||||
        -> Option<(db::UBigInt, &'value str)> {
 | 
			
		||||
fn login_params_from_qs(params: &HashMap<String, String>) 
 | 
			
		||||
        -> Option<(db::UBigInt, &str)> {
 | 
			
		||||
 | 
			
		||||
    return match (params.get("id"), params.get("secret")) {
 | 
			
		||||
        // partially accpept if both keys are present
 | 
			
		||||
        (Some(id), Some(secret)) => {
 | 
			
		||||
            let id_s: String = String::from(*id);
 | 
			
		||||
            let id_s: String = String::from(id);
 | 
			
		||||
 | 
			
		||||
            match id_s.parse::<db::UBigInt>() {
 | 
			
		||||
                // full accpet if id can parse + secret is present
 | 
			
		||||
@ -152,7 +152,7 @@ fn login_params_from_qs<'value>(params: &HashMap<&str, &'value str>)
 | 
			
		||||
pub async fn wall_entry<'path, 'pool, 'params>(
 | 
			
		||||
        path: &'path str, 
 | 
			
		||||
        pool: &'pool Pool, 
 | 
			
		||||
        params: &'params HashMap<&str, &str>) 
 | 
			
		||||
        params: &'params HashMap<String, String>) 
 | 
			
		||||
            -> AuthReason {
 | 
			
		||||
 | 
			
		||||
    // Dont need to auth if it's not required
 | 
			
		||||
@ -192,7 +192,7 @@ pub async fn wall_entry<'path, 'pool, 'params>(
 | 
			
		||||
    return AuthReason::NoKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn login_get_jwt(p: &Pool, response: &mut hyper::Response<hyper::Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn login_get_jwt(p: &Pool, response: &mut hyper::Response<hyper::Body>, params: HashMap<String, String>) {
 | 
			
		||||
    // Login data has already been validated at this point
 | 
			
		||||
    // Required data such as 'id' and 'secret' are there and validated
 | 
			
		||||
    use jsonwebtoken::{
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@ pub async fn list_channels(pool: &Pool, response: &mut Response<Body>) {
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn create_channel(pool: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn create_channel(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * Create a channel base on a few parameters that may or may not be there
 | 
			
		||||
     * @responds with the data of the newly created channel
 | 
			
		||||
@ -48,7 +48,7 @@ pub async fn create_channel(pool: &Pool, response: &mut Response<Body>, params:
 | 
			
		||||
 | 
			
		||||
    let kind = match params.get("kind") { // 1 for vc 2 for text
 | 
			
		||||
        Some(value) => {
 | 
			
		||||
            let v = *value;
 | 
			
		||||
            let v = value;
 | 
			
		||||
            if let Ok(kval) = v.to_string().parse::<i32>() {
 | 
			
		||||
                Some(kval)
 | 
			
		||||
            } else {
 | 
			
		||||
@ -85,7 +85,7 @@ pub async fn create_channel(pool: &Pool, response: &mut Response<Body>, params:
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn delete_channel(pool: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn delete_channel(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * Deletes a channel from the database, only after making sure the user has
 | 
			
		||||
     * the required permissions to do so
 | 
			
		||||
 | 
			
		||||
@ -91,7 +91,7 @@ async fn use_invite(pool: &Pool, code: Option<BigInt>) -> Option<Member>{
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn join(pool: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn join(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * Main dispatcher for dealing with an attempted join via a given invide code
 | 
			
		||||
     * 
 | 
			
		||||
@ -130,7 +130,7 @@ async fn allowed_perm_invite(pool: &Pool, uid: u64) -> bool {
 | 
			
		||||
        _ => false
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
pub async fn create(pool: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn create(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * Creates a new invite
 | 
			
		||||
     * Parameters required asked of the user to provide
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@ async fn route_dispatcher(
 | 
			
		||||
        meth: &Method, 
 | 
			
		||||
        path: &str, 
 | 
			
		||||
        body: Body,
 | 
			
		||||
        params: HashMap<&str, &str>) {
 | 
			
		||||
        params: HashMap<String, String>) {
 | 
			
		||||
 | 
			
		||||
    const GET: &Method = &Method::GET;
 | 
			
		||||
    const POST: &Method = &Method::POST;
 | 
			
		||||
@ -92,7 +92,7 @@ async fn main_responder(request: Request<Body>) -> Result<Response<Body>, hyper:
 | 
			
		||||
    let method = parts.method;
 | 
			
		||||
    let path = parts.uri.path();
 | 
			
		||||
    let qs = parts.uri.query();
 | 
			
		||||
    let params_opt: Option<HashMap<&str, &str>> = if let Some(query_string) = qs {
 | 
			
		||||
    let params_opt: Option<HashMap<String, String>> = if let Some(query_string) = qs {
 | 
			
		||||
        Some(http::parse_query_string(query_string))
 | 
			
		||||
    } else {
 | 
			
		||||
        None
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ use crate::perms;
 | 
			
		||||
use crate::qs_param;
 | 
			
		||||
use db::messages::Message;
 | 
			
		||||
 | 
			
		||||
pub async fn get_by_time(pool: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn get_by_time(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * Has a ton of required parameters just be warned
 | 
			
		||||
     * @channel: channel id we're looking at
 | 
			
		||||
@ -56,7 +56,7 @@ pub async fn get_by_time(pool: &Pool, response: &mut Response<Body>, params: Has
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn send_message(pool: &Pool, response: &mut Response<Body>, body: Body, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn send_message(pool: &Pool, response: &mut Response<Body>, body: Body, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * Message content is sent in the message body
 | 
			
		||||
     * @channel_id: channel id that we're going to send a message to
 | 
			
		||||
@ -99,7 +99,7 @@ pub async fn send_message(pool: &Pool, response: &mut Response<Body>, body: Body
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn from_id(pool: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
 | 
			
		||||
pub async fn from_id(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
 | 
			
		||||
    /*
 | 
			
		||||
     * @start-id: u64
 | 
			
		||||
     * @limit: optional<u64>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user