oxide_cli/auth/
account.rs1use anyhow::Result;
2use serde::{Deserialize, Serialize};
3
4use crate::{AppContext, BACKEND_URL, auth::token::get_auth_user};
5
6#[derive(Serialize, Deserialize, Debug)]
7pub struct ResponseUser {
8 id: String,
9 login: String,
10 github_id: i32,
11 avatar_url: String,
12}
13
14pub async fn print_user_info(ctx: &AppContext) -> Result<()> {
15 let user = get_user_info(ctx).await?;
16
17 println!("You are registered as @{}", user.login);
18
19 Ok(())
20}
21
22pub async fn get_user_info(ctx: &AppContext) -> Result<ResponseUser> {
23 let user = get_auth_user(&ctx.paths.auth)?;
24
25 let res = ctx
26 .client
27 .get(format!("{}/user/info", BACKEND_URL))
28 .header("Authorization", format!("Bearer {}", user.token))
29 .send()
30 .await?
31 .error_for_status()?;
32
33 let user: ResponseUser = res.json().await?;
34
35 Ok(user)
36}