From 8241196284001839641c0bcfede39b4740c59ed6 Mon Sep 17 00:00:00 2001 From: Radiicall Date: Sat, 3 May 2025 05:32:22 +0200 Subject: [PATCH] feat: add boilerplate rust files --- src/api/v1/mod.rs | 1 + src/api/v1/servers/channels/mod.rs | 3 ++ src/api/v1/servers/channels/uuid/messages.rs | 0 src/api/v1/servers/channels/uuid/mod.rs | 0 src/api/v1/servers/mod.rs | 48 ++++++++++++++++++++ src/api/v1/servers/uuid.rs | 0 6 files changed, 52 insertions(+) create mode 100644 src/api/v1/servers/channels/mod.rs create mode 100644 src/api/v1/servers/channels/uuid/messages.rs create mode 100644 src/api/v1/servers/channels/uuid/mod.rs create mode 100644 src/api/v1/servers/mod.rs create mode 100644 src/api/v1/servers/uuid.rs diff --git a/src/api/v1/mod.rs b/src/api/v1/mod.rs index a5fd58a..7e62f06 100644 --- a/src/api/v1/mod.rs +++ b/src/api/v1/mod.rs @@ -3,6 +3,7 @@ use actix_web::{Scope, web}; mod auth; mod stats; mod users; +mod servers; pub fn web() -> Scope { web::scope("/v1") diff --git a/src/api/v1/servers/channels/mod.rs b/src/api/v1/servers/channels/mod.rs new file mode 100644 index 0000000..b9cf990 --- /dev/null +++ b/src/api/v1/servers/channels/mod.rs @@ -0,0 +1,3 @@ +pub fn web() -> Scope { + web::scope("/channels") +} \ No newline at end of file diff --git a/src/api/v1/servers/channels/uuid/messages.rs b/src/api/v1/servers/channels/uuid/messages.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/api/v1/servers/channels/uuid/mod.rs b/src/api/v1/servers/channels/uuid/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/api/v1/servers/mod.rs b/src/api/v1/servers/mod.rs new file mode 100644 index 0000000..6b88e68 --- /dev/null +++ b/src/api/v1/servers/mod.rs @@ -0,0 +1,48 @@ +use actix_web::{Error, HttpResponse, error, post, web}; +use futures::StreamExt; +use log::error; +use serde::{Deserialize, Serialize}; +use std::time::{SystemTime, UNIX_EPOCH}; + +mod uuid; +mod channels; + +use crate::Data; + +#[derive(Deserialize)] +struct Request { + access_token: String, + name: String +} + +#[derive(Serialize)] +struct Response { + refresh_token: String, + access_token: String, +} + +const MAX_SIZE: usize = 262_144; + +pub fn web() -> Scope { + web::scope("/servers") + .service(channels::web()) + .service(uuid::res) +} + +#[post("")] +pub async fn res(mut payload: web::Payload, data: web::Data) -> Result { + let mut body = web::BytesMut::new(); + while let Some(chunk) = payload.next().await { + let chunk = chunk?; + // limit max size of in-memory payload + if (body.len() + chunk.len()) > MAX_SIZE { + return Err(error::ErrorBadRequest("overflow")); + } + body.extend_from_slice(&chunk); + } + + let request = serde_json::from_slice::(&body)?; + + Ok(HttpResponse::Unauthorized().finish()) +} + diff --git a/src/api/v1/servers/uuid.rs b/src/api/v1/servers/uuid.rs new file mode 100644 index 0000000..e69de29