feat: allow getting user profile via json api

This commit is contained in:
DJMrTV 2025-06-06 12:49:16 +02:00
commit 82a81422d6
6 changed files with 21 additions and 8 deletions

View file

@ -1 +1,2 @@
pub mod oauth;
pub mod oauth;
pub mod users;

View file

@ -1 +1,2 @@
pub mod generate_token;
pub mod generate_token;

View file

@ -0,0 +1 @@
pub mod profile;

View file

@ -0,0 +1,10 @@
use rocket::serde::json::Json;
use rocket::{get, State};
use crate::account::account::Auth;
use crate::nnid::people::{build_profile, GetOwnProfileData};
use crate::Pool;
#[get("/api/v2/users/@me/profile")]
pub async fn get_own_profile(pool: &State<Pool>, auth: Auth<true>) -> Json<GetOwnProfileData> {
Json(build_profile(auth.into()))
}

View file

@ -149,6 +149,7 @@ async fn launch() -> _ {
nnid::provider::get_service_token,
nnid::mapped_ids::mapped_ids,
json_api::oauth::generate_token::generate_token,
json_api::users::profile::get_own_profile,
papi::login::login,
papi::user::get_user,
// graphql::graphiql,

View file

@ -266,20 +266,20 @@ pub struct GetOwnProfileData{
#[get("/v1/api/people/@me/profile")]
pub fn get_own_profile(user: Auth<false>) -> Ds<Xml<GetOwnProfileData>>{
build_own_profile(user.into())
Ds(Xml(build_profile(user.into())))
}
#[get("/v1/api/people/@me/devices/owner")]
pub fn get_device_owner(user: Auth<false>) -> Ds<Xml<GetOwnProfileData>>{
build_own_profile(user.into())
Ds(Xml(build_profile(user.into())))
}
#[post("/v1/api/people/@me/devices")]
pub fn get_own_device(user: Auth<false>) -> Ds<Xml<GetOwnProfileData>>{
build_own_profile(user.into())
Ds(Xml(build_profile(user.into())))
}
fn build_own_profile(user: User) -> Ds<Xml<GetOwnProfileData>> {
pub fn build_profile(user: User) -> GetOwnProfileData {
let User {
username,
pid,
@ -309,7 +309,7 @@ fn build_own_profile(user: User) -> Ds<Xml<GetOwnProfileData>> {
.replace("\r", "")
.replace(" ", "");
Ds(Xml(
GetOwnProfileData {
active_flag: YesNoVal(true),
pid,
@ -361,7 +361,6 @@ fn build_own_profile(user: User) -> Ds<Xml<GetOwnProfileData>> {
region,
utc_offset: timezone_offset,
}
))
}
#[put("/v1/api/people/@me/miis/@primary", data = "<data>")]