mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-20 16:35:17 +00:00
Can toggle incognito mode
This commit is contained in:
@ -11,25 +11,25 @@ use crate::data::base_request_handler::{BaseRequestHandler, RequestValue};
|
||||
use crate::data::error::ResultBoxError;
|
||||
use crate::data::user::UserID;
|
||||
|
||||
pub enum WsResponseType {
|
||||
pub enum UserWsResponseType {
|
||||
SUCCESS,
|
||||
ERROR,
|
||||
}
|
||||
|
||||
pub struct WsResponse {
|
||||
pub r#type: WsResponseType,
|
||||
pub struct UserWsResponse {
|
||||
pub r#type: UserWsResponseType,
|
||||
pub content: serde_json::Value,
|
||||
}
|
||||
|
||||
pub struct WsRequestHandler {
|
||||
pub struct UserWsRequestHandler {
|
||||
connection: WsConnection,
|
||||
args: HashMap<String, RequestValue>,
|
||||
response: Option<WsResponse>,
|
||||
response: Option<UserWsResponse>,
|
||||
}
|
||||
|
||||
impl WsRequestHandler {
|
||||
pub fn new(connection: &WsConnection, args: HashMap<String, String>) -> WsRequestHandler {
|
||||
WsRequestHandler {
|
||||
impl UserWsRequestHandler {
|
||||
pub fn new(connection: &WsConnection, args: HashMap<String, String>) -> UserWsRequestHandler {
|
||||
UserWsRequestHandler {
|
||||
connection: connection.clone(),
|
||||
args: args.into_iter().map(|f| (f.0, RequestValue::String(f.1))).collect(),
|
||||
response: None,
|
||||
@ -42,23 +42,30 @@ impl WsRequestHandler {
|
||||
}
|
||||
|
||||
/// Get the response to the request
|
||||
pub fn response(mut self) -> WsResponse {
|
||||
pub fn response(mut self) -> UserWsResponse {
|
||||
if !self.has_response() {
|
||||
self.success("Request done.").unwrap();
|
||||
}
|
||||
|
||||
return self.response.unwrap();
|
||||
}
|
||||
|
||||
/// Update information about the WebSocket connection
|
||||
pub fn update_conn<H>(&mut self, do_updates: H) -> ResultBoxError where H: FnOnce(&mut WsConnection) {
|
||||
self.connection = self.connection.clone().replace(do_updates);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl BaseRequestHandler for WsRequestHandler {
|
||||
impl BaseRequestHandler for UserWsRequestHandler {
|
||||
fn post_parameter_opt(&self, name: &str) -> Option<&RequestValue> {
|
||||
self.args.get(name)
|
||||
}
|
||||
|
||||
fn set_response<T: Serialize>(&mut self, response: T) -> RequestResult {
|
||||
self.response = Some(WsResponse {
|
||||
r#type: WsResponseType::SUCCESS,
|
||||
self.response = Some(UserWsResponse {
|
||||
r#type: UserWsResponseType::SUCCESS,
|
||||
content: serde_json::to_value(response)?,
|
||||
});
|
||||
|
||||
@ -66,8 +73,8 @@ impl BaseRequestHandler for WsRequestHandler {
|
||||
}
|
||||
|
||||
fn set_error(&mut self, error: HttpError) {
|
||||
self.response = Some(WsResponse {
|
||||
r#type: WsResponseType::ERROR,
|
||||
self.response = Some(UserWsResponse {
|
||||
r#type: UserWsResponseType::ERROR,
|
||||
content: serde_json::Value::String(error.error.message),
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user