Skip to content
Snippets Groups Projects
mod.rs 3.22 KiB
Newer Older
pub use rocket::http::Status;
insert's avatar
insert committed
pub use rocket::response::Redirect;
insert's avatar
insert committed
use rocket::Rocket;

// use crate::database::Permission;
// use rocket_contrib::json::JsonValue;
/* pub mod channel;
pub mod guild;
pub mod user; */
insert's avatar
insert committed
pub mod root;
insert's avatar
insert committed

/* #[derive(Responder)]
insert's avatar
insert committed
pub enum Response {
    #[response()]
    Result(Status),
insert's avatar
insert committed
    #[response()]
    Success(JsonValue),
    #[response()]
    Redirect(Redirect),
    #[response(status = 207)]
    PartialStatus(JsonValue),
insert's avatar
insert committed
    #[response(status = 400)]
    BadRequest(JsonValue),
    #[response(status = 401)]
    Unauthorized(JsonValue),
insert's avatar
insert committed
    #[response(status = 401)]
    LackingPermission(Permission),
insert's avatar
insert committed
    #[response(status = 404)]
    NotFound(JsonValue),
    #[response(status = 406)]
    NotAcceptable(JsonValue),
    #[response(status = 409)]
    Conflict(JsonValue),
    #[response(status = 410)]
    Gone(JsonValue),
insert's avatar
insert committed
    #[response(status = 418)]
    Teapot(JsonValue),
insert's avatar
insert committed
    #[response(status = 422)]
    UnprocessableEntity(JsonValue),
    #[response(status = 429)]
    TooManyRequests(JsonValue),
    #[response(status = 500)]
    InternalServerError(JsonValue),
}

insert's avatar
insert committed
use rocket::http::ContentType;
use rocket::request::Request;
use std::io::Cursor;

use rocket::response::{Responder, Result};

impl<'a> Responder<'a, 'static> for Permission {
    fn respond_to(self, _: &Request) -> Result<'static> {
        let body = format!(
            "{{\"error\":\"Lacking permission: {:?}.\",\"permission\":{}}}",
            self, self as u32,
        );

insert's avatar
insert committed
        rocket::response::Response::build()
            .header(ContentType::JSON)
            .sized_body(body.len(), Cursor::new(body))
insert's avatar
insert committed
            .ok()
    }
insert's avatar
insert committed
pub fn mount(rocket: Rocket) -> Rocket {
insert's avatar
insert committed
    rocket
        .mount("/", routes![root::root, root::teapot])
insert's avatar
insert committed
            "/users",
insert's avatar
insert committed
            routes![
                user::me,
                user::user,
insert's avatar
insert committed
                user::dms,
                user::dm,
                user::get_friends,
                user::get_friend,
                user::add_friend,
                user::remove_friend,
                user::block_user,
insert's avatar
insert committed
                user::unblock_user,
insert's avatar
insert committed
            ],
        )
        .mount(
insert's avatar
insert committed
            "/channels",
insert's avatar
insert committed
            routes![
                channel::create_group,
insert's avatar
insert committed
                channel::channel,
                channel::add_member,
                channel::remove_member,
insert's avatar
insert committed
                channel::delete,
                channel::messages,
                channel::get_message,
                channel::send_message,
                channel::edit_message,
insert's avatar
insert committed
                channel::delete_message,
insert's avatar
insert committed
            ],
        )
insert's avatar
insert committed
        .mount(
insert's avatar
insert committed
            "/guild",
            routes![
                guild::my_guilds,
                guild::guild,
insert's avatar
insert committed
                guild::remove_guild,
insert's avatar
insert committed
                guild::create_channel,
                guild::create_invite,
                guild::remove_invite,
                guild::fetch_invites,
                guild::fetch_invite,
                guild::use_invite,
                guild::create_guild,
                guild::fetch_members,
                guild::fetch_member,
insert's avatar
insert committed
                guild::kick_member,
                guild::ban_member,
insert's avatar
insert committed
                guild::unban_member,
insert's avatar
insert committed
}