core/src/api/response.rs

78 lines
1.7 KiB
Rust
Raw Normal View History

2021-04-20 19:23:04 +00:00
use crate::db::types::SignKey;
2021-03-29 08:44:26 +00:00
use crate::db::types::User as SqliteUser;
2021-03-24 07:32:31 +00:00
use serde_derive::{Deserialize, Serialize};
2021-03-31 04:12:26 +00:00
use tungstenite::http::Response;
2021-03-29 08:44:26 +00:00
pub type InsertKey = String;
2021-04-24 05:09:15 +00:00
2021-04-28 15:26:57 +00:00
use crate::db::types::{Id, Time};
2021-04-24 05:09:15 +00:00
use crate::api::types::Message;
#[derive(Serialize, Deserialize, Debug)]
2021-04-20 19:23:04 +00:00
#[serde(rename_all = "camelCase")]
#[serde(tag = "type")]
pub enum ResponseType {
2021-03-24 07:32:31 +00:00
Error,
2021-04-28 15:26:57 +00:00
#[serde(rename_all = "camelCase")]
UserAdded(User),
NewMessage {
date: Time,
from_me: bool,
id: uuid::Uuid,
message: String,
},
2021-03-24 07:32:31 +00:00
NewUser,
FetchedMessages,
InstanceCreated,
InstanceAccepted,
#[serde(rename_all = "camelCase")]
2021-04-20 19:23:04 +00:00
InitialConfig {
id: crate::db::types::Id,
public_key: fcpv2::types::SSK,
private_key: fcpv2::types::SSK,
},
UserList {
users: Vec<User>,
2021-04-24 05:09:15 +00:00
},
#[serde(rename_all = "camelCase")]
MessageList{
id: uuid::Uuid,
messages: Vec<Message>
}
2021-03-24 07:32:31 +00:00
}
#[derive(Serialize, Deserialize)]
2021-04-20 19:23:04 +00:00
pub enum ErrorType {
2021-03-31 04:12:26 +00:00
WrongKey,
2021-04-01 12:44:13 +00:00
FailedToAddUser,
2021-04-20 19:23:04 +00:00
WrongUserId,
2021-03-24 07:32:31 +00:00
}
#[derive(Serialize, Deserialize)]
2021-04-20 19:23:04 +00:00
pub struct AppError {
2021-03-31 04:12:26 +00:00
pub res_type: ErrorType,
2021-03-24 07:32:31 +00:00
}
// Status of last requested action. Like `Create Instance` or `LoadUsers`
2021-03-31 04:12:26 +00:00
#[derive(Serialize, Deserialize)]
2021-04-20 19:23:04 +00:00
pub struct AppStatus {
pub res_type: ResponseType,
2021-03-24 07:32:31 +00:00
}
2021-03-29 08:44:26 +00:00
#[derive(Debug, Deserialize, Serialize, Clone)]
#[serde(rename_all = "camelCase")]
2021-03-29 08:44:26 +00:00
pub struct User {
2021-03-31 04:12:26 +00:00
pub id: String,
2021-03-29 08:44:26 +00:00
pub name: String,
pub sign_key: SignKey,
pub insert_key: InsertKey,
pub messages_count: u32,
2021-04-22 15:28:07 +00:00
pub my_messages_count: u32,
2021-03-29 08:44:26 +00:00
}
2021-04-28 15:26:57 +00:00
2021-04-29 07:00:20 +00:00
#[derive(Serialize, Deserialize, Debug, Clone)]
2021-04-28 15:26:57 +00:00
#[serde(rename_all = "camelCase")]
pub struct FreenetMessage {
pub id: uuid::Uuid,
pub message: String,
pub date: Time,
}