This commit is contained in:
Aleksandr 2025-12-14 03:25:23 +03:00
parent 7583f7e557
commit 8d3c25b59d
34 changed files with 373 additions and 196 deletions

View file

@ -0,0 +1,19 @@
use eva::data;
use crate::requests::status_code;
use viendesu_core::{errors, requests::files as reqs};
#[data]
pub struct GetInfo {}
impl_req!(GetInfo => [reqs::get_info::Ok; reqs::get_info::Err]);
status_code::direct!(reqs::get_info::Ok => OK);
status_code::map!(reqs::get_info::Err => [NotFound]);
const _: () = {
use errors::files::*;
use status_code::direct;
direct!(NotFound => NOT_FOUND);
};

View file

@ -32,3 +32,6 @@ pub mod games;
pub mod boards;
pub mod messages;
pub mod threads;
pub mod files;
pub mod uploads;

View file

@ -0,0 +1,57 @@
use std::num::NonZeroU64;
use eva::data;
use crate::requests::status_code;
use viendesu_core::{errors, requests::uploads as reqs, types::file};
#[data]
pub struct ListPending {}
impl_req!(ListPending => [reqs::list_pending::Ok; reqs::list_pending::Err]);
status_code::direct!(reqs::list_pending::Ok => OK);
status_code::map!(reqs::list_pending::Err => []);
#[data]
pub struct Start {
pub file_name: Option<file::BaseName>,
pub hash: file::Hash,
pub class: file::ClassKind,
pub size: NonZeroU64,
}
impl_req!(Start => [reqs::start::Ok; reqs::start::Err]);
status_code::direct!(reqs::start::Ok => CREATED);
status_code::map!(reqs::start::Err => [QuotaExceeded, SimUpQuotaExceeded]);
#[data]
pub struct Finish {}
impl_req!(Finish => [reqs::finish::Ok; reqs::finish::Err]);
status_code::direct!(reqs::finish::Ok => OK);
status_code::map!(reqs::finish::Err => [
HashMismatch,
NotFound,
Overuploading,
ConcurrentUploadInProgress,
]);
#[data]
pub struct Abort {}
impl_req!(Abort => [reqs::abort::Ok; reqs::abort::Err]);
status_code::direct!(reqs::abort::Ok => OK);
status_code::map!(reqs::abort::Err => [NotFound]);
const _: () = {
use errors::uploads::*;
use status_code::direct;
direct!(ConcurrentUploadInProgress => BAD_REQUEST);
direct!(NotFound => NOT_FOUND);
direct!(QuotaExceeded => TOO_MANY_REQUESTS);
direct!(SimUpQuotaExceeded => TOO_MANY_REQUESTS);
direct!(Overuploading => BAD_REQUEST);
direct!(HashMismatch => BAD_REQUEST);
};