Skip to main content

oxide_cli/auth/
account.rs

1use 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}