1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-06-21 00:45:18 +00:00

Get information about API client

This commit is contained in:
2020-05-23 11:00:53 +02:00
parent b18f6f4190
commit 665aa1683c
8 changed files with 87 additions and 10 deletions

11
src/data/api_client.rs Normal file
View File

@ -0,0 +1,11 @@
/// API client information
///
/// @author Pierre HUBERT
#[derive(Debug)]
pub struct APIClient {
pub id: u32,
pub name: String,
pub token: String,
pub domain: Option<String>,
}

View File

@ -5,6 +5,7 @@ use std::error::Error;
use serde::Serialize;
use crate::data::error::{ResultBoxError, ExecError};
use std::collections::HashMap;
use crate::helpers::api_helper;
/// Http request handler
///
@ -82,18 +83,23 @@ impl HttpRequestHandler {
Err(Box::new(ExecError::new(&message)))
}
/// If result is not OK, return a bad request
pub fn ok_or_bad_request<E>(&mut self, res: ResultBoxError<E>, msg: &str) -> ResultBoxError<E> {
match res {
Ok(e) => Ok(e),
Err(err) => {
println!("Error leading to bad request: {}", err);
self.bad_request(msg.to_string())?;
unreachable!()
},
}
}
/// 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) -> Result<(), Box<dyn Error>> {
println!("me = {}", self.post_string("me")?);
Ok(())
}
/// Check if a POST parameter was present in the request or not
pub fn has_post_parameter(&self, name: &str) -> bool {
self.body.contains_key(name)
@ -116,7 +122,22 @@ impl HttpRequestHandler {
Some(s) => Ok(s.to_string()),
None => {
Err(self.bad_request(format!("'{}' is not a string!", name)).unwrap_err())
},
}
}
}
/// Check login tokens
pub fn check_client_token(&mut self) -> Result<(), Box<dyn Error>> {
let api_name = self.post_string("serviceName")?;
let api_token = self.post_string("serviceToken")?;
let client = self.ok_or_bad_request(
api_helper::get_client(&api_name, &api_token),
"Client not recognized!"
)?;
// TODO : continue here
println!("{:#?}", client);
Ok(())
}
}

View File

@ -3,3 +3,4 @@ pub mod config;
pub mod http_error;
pub mod http_request_handler;
pub mod api_client;