Start moving to Rocket 0.5.0

This commit is contained in:
Paul
2021-08-03 14:40:07 +01:00
committed by Paul Makles
parent 33262cc703
commit 9fec4e48c0
62 changed files with 821 additions and 421 deletions

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use crate::{database::*, notifications::events::RemoveChannelField};
use mongodb::bson::{doc, to_document};
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_channel().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use crate::util::variables::MAX_GROUP_SIZE;
use mongodb::bson::doc;
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
use std::collections::HashSet;
use std::iter::FromIterator;
@@ -23,7 +23,7 @@ pub struct Data {
}
#[post("/create", data = "<info>")]
pub async fn req(user: User, info: Json<Data>) -> Result<JsonValue> {
pub async fn req(user: User, info: Json<Data>) -> Result<Value> {
let info = info.into_inner();
info.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use nanoid::nanoid;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
lazy_static! {
static ref ALPHABET: [char; 54] = [
@@ -14,7 +14,7 @@ lazy_static! {
}
#[post("/<target>/invites")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_channel().await?;
let perm = permissions::PermissionCalculator::new(&user)
.with_channel(&target)

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>/members")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_channel().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use chrono::Utc;
use mongodb::bson::{doc, Bson, DateTime, Document};
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>/messages/<msg>")]
pub async fn req(user: User, target: Ref, msg: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, msg: Ref) -> Result<Value> {
let channel = target.fetch_channel().await?;
channel.has_messaging()?;

View File

@@ -8,12 +8,12 @@ use mongodb::{
bson::{doc, from_document},
options::FindOptions,
};
use rocket::request::Form;
use rocket_contrib::json::JsonValue;
use rocket::form::Form;
use rocket::serde::json::Value;
use serde::{Deserialize, Serialize};
use validator::Validate;
#[derive(Serialize, Deserialize, FromFormValue)]
#[derive(Serialize, Deserialize, FromFormField)]
pub enum Sort {
Latest,
Oldest,
@@ -37,7 +37,7 @@ pub struct Options {
}
#[get("/<target>/messages?<options..>")]
pub async fn req(user: User, target: Ref, options: Form<Options>) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, options: Form<Options>) -> Result<Value> {
options
.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use futures::StreamExt;
use mongodb::bson::{doc, from_document};
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
@@ -12,7 +12,7 @@ pub struct Options {
}
#[post("/<target>/messages/stale", data = "<data>")]
pub async fn req(user: User, target: Ref, data: Json<Options>) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, data: Json<Options>) -> Result<Value> {
if data.ids.len() > 150 {
return Err(Error::TooManyIds);
}

View File

@@ -8,11 +8,11 @@ use mongodb::{
bson::{doc, from_document},
options::FindOptions,
};
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
use validator::Validate;
#[derive(Serialize, Deserialize, FromFormValue)]
#[derive(Serialize, Deserialize, FromFormField)]
pub enum Sort {
Relevance,
Latest,
@@ -42,7 +42,7 @@ pub struct Options {
}
#[post("/<target>/search", data = "<options>")]
pub async fn req(user: User, target: Ref, options: Json<Options>) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, options: Json<Options>) -> Result<Value> {
options
.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -5,7 +5,7 @@ use crate::util::result::{Error, Result};
use mongodb::{bson::doc, options::FindOneOptions};
use regex::Regex;
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
use ulid::Ulid;
use validator::Validate;
@@ -33,7 +33,7 @@ lazy_static! {
}
#[post("/<target>/messages", data = "<message>")]
pub async fn req(user: User, target: Ref, message: Json<Data>) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, message: Json<Data>) -> Result<Value> {
let message = message.into_inner();
message
.validate()

View File

@@ -1,5 +1,5 @@
use mongodb::bson::doc;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Serialize, Deserialize};
use validator::Contains;

View File

@@ -1,5 +1,5 @@
use mongodb::bson::doc;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Serialize, Deserialize};
use crate::database::*;

View File

@@ -2,7 +2,7 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use crate::util::variables::{USE_VOSO, VOSO_MANAGE_TOKEN, VOSO_URL};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
@@ -11,7 +11,7 @@ struct CreateUserResponse {
}
#[post("/<target>/join_call")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
if !*USE_VOSO {
return Err(Error::VosoUnavailable);
}

View File

@@ -1,7 +1,7 @@
use crate::database::*;
use crate::util::result::Result;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
use serde::Serialize;
#[derive(Serialize, Debug, Clone)]
@@ -26,7 +26,7 @@ pub enum InviteResponse {
}
#[get("/<target>")]
pub async fn req(target: Ref) -> Result<JsonValue> {
pub async fn req(target: Ref) -> Result<Value> {
let target = target.fetch_invite().await?;
match target {

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::Result;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[post("/<target>")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_invite().await?;
match target {

View File

@@ -1,6 +1,6 @@
pub use rocket::http::Status;
pub use rocket::response::Redirect;
use rocket::Rocket;
pub use rocket::http::Status;
use rocket::{Phase, Rocket};
mod channels;
mod invites;
@@ -11,7 +11,7 @@ mod servers;
mod sync;
mod users;
pub fn mount(rocket: Rocket) -> Rocket {
pub fn mount<T: Phase>(rocket: Rocket<T>) -> Rocket<T> {
rocket
.mount("/", routes![root::root])
.mount("/onboard", onboard::routes())

View File

@@ -4,7 +4,7 @@ use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rauth::auth::Session;
use regex::Regex;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use rauth::auth::Session;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/hello")]
pub async fn req(_session: Session, user: Option<User>) -> JsonValue {
pub async fn req(_session: Session, user: Option<User>) -> Value {
json!({
"onboarding": user.is_none()
})

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use mongodb::bson::{doc, to_document};
use rauth::auth::Session;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]

View File

@@ -1,13 +1,14 @@
use crate::util::variables::{
use crate::util::{ratelimit::RateLimitGuard, variables::{
APP_URL, AUTUMN_URL, EXTERNAL_WS_URL, HCAPTCHA_SITEKEY, INVITE_ONLY, JANUARY_URL, USE_AUTUMN,
USE_EMAIL, USE_HCAPTCHA, USE_JANUARY, USE_VOSO, VAPID_PUBLIC_KEY, VOSO_URL, VOSO_WS_HOST,
};
}};
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
use rocket_governor::RocketGovernor;
#[get("/")]
pub async fn root() -> JsonValue {
pub async fn root(_limitguard: RocketGovernor<'_, RateLimitGuard>) -> Value {
json!({
"revolt": crate::version::VERSION,
"features": {

View File

@@ -2,7 +2,7 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -4,7 +4,7 @@ use crate::util::result::{Error, Result};
use futures::StreamExt;
use mongodb::options::FindOptions;
use serde::{Serialize, Deserialize};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
use mongodb::bson::{doc, from_document};
#[derive(Serialize, Deserialize)]
@@ -15,7 +15,7 @@ struct BannedUser {
}
#[get("/<target>/bans")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_server().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -4,7 +4,7 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
use ulid::Ulid;
use validator::Validate;
@@ -35,7 +35,7 @@ pub struct Data {
}
#[post("/<target>/channels", data = "<info>")]
pub async fn req(user: User, target: Ref, info: Json<Data>) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, info: Json<Data>) -> Result<Value> {
let info = info.into_inner();
info.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use futures::StreamExt;
use mongodb::bson::{doc, from_document};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
@@ -15,7 +15,7 @@ pub struct ServerInvite {
}
#[get("/<target>/invites")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_server().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -5,7 +5,7 @@ use crate::util::result::{Error, Result};
use crate::{database::*, notifications::events::RemoveMemberField};
use mongodb::bson::{doc, to_document};
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -2,10 +2,10 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>/members/<member>")]
pub async fn req(user: User, target: Ref, member: String) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, member: String) -> Result<Value> {
let target = target.fetch_server().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -3,12 +3,12 @@ use crate::util::result::{Error, Result};
use futures::StreamExt;
use mongodb::bson::{doc, from_document, Document};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
// ! FIXME: this is a temporary route while permissions are being worked on.
#[get("/<target>/members")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_server().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -1,5 +1,5 @@
use mongodb::bson::doc;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Serialize, Deserialize};
use crate::database::*;

View File

@@ -1,5 +1,5 @@
use mongodb::bson::doc;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Serialize, Deserialize};
use crate::database::*;

View File

@@ -6,7 +6,7 @@ use ulid::Ulid;
use mongodb::bson::doc;
use validator::Validate;
use serde::{Serialize, Deserialize};
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
#[derive(Validate, Serialize, Deserialize)]
pub struct Data {
@@ -15,7 +15,7 @@ pub struct Data {
}
#[post("/<target>/roles", data = "<data>")]
pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<Value> {
let data = data.into_inner();
data.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use crate::{database::*, notifications::events::RemoveRoleField};
use mongodb::bson::doc;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -4,7 +4,7 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
use ulid::Ulid;
use validator::Validate;
@@ -21,7 +21,7 @@ pub struct Data {
}
#[post("/create", data = "<info>")]
pub async fn req(user: User, info: Json<Data>) -> Result<JsonValue> {
pub async fn req(user: User, info: Json<Data>) -> Result<Value> {
let info = info.into_inner();
info.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use crate::{database::*, notifications::events::RemoveServerField};
use mongodb::bson::{doc, to_bson, to_document};
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_server().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use mongodb::options::FindOneOptions;
use rocket_contrib::json::{Json, JsonValue};
use rocket::serde::json::{Json, Value};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
@@ -12,7 +12,7 @@ pub struct Options {
}
#[post("/settings/fetch", data = "<options>")]
pub async fn req(user: User, options: Json<Options>) -> Result<JsonValue> {
pub async fn req(user: User, options: Json<Options>) -> Result<Value> {
let options = options.into_inner();
let mut projection = doc! {
"_id": 0,

View File

@@ -2,9 +2,9 @@ use crate::database::*;
use crate::util::result::Result;
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/unreads")]
pub async fn req(user: User) -> Result<JsonValue> {
pub async fn req(user: User) -> Result<Value> {
Ok(json!(User::fetch_unreads(&user.id).await?))
}

View File

@@ -5,8 +5,8 @@ use crate::util::result::{Error, Result};
use chrono::prelude::*;
use mongodb::bson::{doc, to_bson};
use mongodb::options::UpdateOptions;
use rocket::request::Form;
use rocket_contrib::json::Json;
use rocket::form::Form;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

View File

@@ -5,10 +5,10 @@ use crate::util::result::{Error, Result};
use futures::try_join;
use mongodb::bson::doc;
use mongodb::options::{Collation, FindOneOptions};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[put("/<username>/friend")]
pub async fn req(user: User, username: String) -> Result<JsonValue> {
pub async fn req(user: User, username: String) -> Result<Value> {
let col = get_collection("users");
let doc = col
.find_one(

View File

@@ -4,10 +4,10 @@ use crate::util::result::{Error, Result};
use futures::try_join;
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[put("/<target>/block")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let col = get_collection("users");
let target = target.fetch_user().await?;

View File

@@ -6,7 +6,7 @@ use mongodb::bson::doc;
use rauth::auth::{Auth, Session};
use regex::Regex;
use rocket::State;
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;
@@ -25,7 +25,7 @@ pub struct Data {
#[patch("/<_ignore_id>/username", data = "<data>")]
pub async fn req(
auth: State<'_, Auth>,
auth: &State<Auth>,
session: Session,
user: User,
data: Json<Data>,

View File

@@ -3,7 +3,7 @@ use crate::util::result::{Error, Result};
use crate::{database::*, notifications::events::RemoveUserField};
use mongodb::bson::{doc, to_document};
use rocket_contrib::json::Json;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use validator::Validate;

View File

@@ -3,10 +3,10 @@ use crate::util::result::{Error, Result};
use futures::StreamExt;
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/dms")]
pub async fn req(user: User) -> Result<JsonValue> {
pub async fn req(user: User) -> Result<Value> {
let mut cursor = get_collection("channels")
.find(
doc! {

View File

@@ -2,10 +2,10 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>/profile")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_user().await?;
let perm = permissions::PermissionCalculator::new(&user)
.with_user(&target)

View File

@@ -1,9 +1,9 @@
use crate::database::*;
use crate::util::result::Result;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>/relationship")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
Ok(json!({ "status": get_relationship(&user, &target.id) }))
}

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::Result;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/relationships")]
pub async fn req(user: User) -> Result<JsonValue> {
pub async fn req(user: User) -> Result<Value> {
Ok(if let Some(vec) = user.relations {
json!(vec)
} else {

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let target = target.fetch_user().await?;
let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -4,10 +4,10 @@ use crate::util::result::{Error, Result};
use futures::StreamExt;
use mongodb::bson::{doc, Document};
use mongodb::options::FindOptions;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[get("/<target>/mutual")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let users = get_collection("users")
.find(
doc! {

View File

@@ -1,5 +1,6 @@
use rocket::{Request, Response};
use rocket::response::{self, NamedFile, Responder};
use rocket::response::{self, Responder};
use rocket::fs::NamedFile;
use std::path::Path;
use crate::database::Ref;

View File

@@ -2,11 +2,11 @@ use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
use ulid::Ulid;
#[get("/<target>/dm")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let query = if user.id == target.id {
doc! {
"channel_type": "SavedMessages",

View File

@@ -4,10 +4,10 @@ use crate::util::result::{Error, Result};
use futures::try_join;
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[delete("/<target>/friend")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let col = get_collection("users");
let target = target.fetch_user().await?;

View File

@@ -4,10 +4,10 @@ use crate::util::result::{Error, Result};
use futures::try_join;
use mongodb::bson::doc;
use rocket_contrib::json::JsonValue;
use rocket::serde::json::Value;
#[delete("/<target>/block")]
pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
pub async fn req(user: User, target: Ref) -> Result<Value> {
let col = get_collection("users");
let target = target.fetch_user().await?;