mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 13:36:59 +00:00
Add user lookup.
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
use crate::auth::User;
|
||||
use crate::database;
|
||||
use crate::email;
|
||||
|
||||
|
||||
@@ -6,5 +6,5 @@ mod user;
|
||||
pub fn mount(rocket: Rocket) -> Rocket {
|
||||
rocket
|
||||
.mount("/api/account", routes![ account::create, account::verify_email, account::resend_email, account::login ])
|
||||
.mount("/api/users", routes![ user::me ])
|
||||
.mount("/api/users", routes![ user::me, user::lookup ])
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
use crate::auth::User;
|
||||
use crate::database;
|
||||
|
||||
use rocket_contrib::json::{ JsonValue };
|
||||
use bson::{ doc };
|
||||
use rocket_contrib::json::{ Json, JsonValue };
|
||||
use serde::{ Serialize, Deserialize };
|
||||
use mongodb::options::FindOptions;
|
||||
use bson::{ bson, doc };
|
||||
|
||||
#[get("/@me")]
|
||||
pub fn me(user: User) -> JsonValue {
|
||||
@@ -16,3 +19,31 @@ pub fn me(user: User) -> JsonValue {
|
||||
"created_timestamp": id.datetime().timestamp(),
|
||||
})
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Query {
|
||||
username: String,
|
||||
}
|
||||
|
||||
#[post("/lookup", data = "<query>")]
|
||||
pub fn lookup(_user: User, query: Json<Query>) -> JsonValue {
|
||||
let col = database::get_db().collection("users");
|
||||
|
||||
let users = col.find(
|
||||
doc! { "username": query.username.clone() },
|
||||
FindOptions::builder().limit(10).build()
|
||||
).expect("Failed user lookup");
|
||||
|
||||
let mut results = Vec::new();
|
||||
for user in users {
|
||||
let u = user.expect("Failed to unwrap user.");
|
||||
results.push(
|
||||
json!({
|
||||
"id": u.get_str("_id").expect("DB[id]"),
|
||||
"username": u.get_str("username").expect("DB[username]")
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
json!(results)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user