Skip to main content

polyoxide_gamma/api/
user.rs

1use polyoxide_core::{QueryBuilder, Request};
2use reqwest::Client;
3use serde::{Deserialize, Serialize};
4use url::Url;
5
6use crate::error::GammaError;
7
8/// User API namespace
9#[derive(Clone)]
10pub struct User {
11    pub(crate) client: Client,
12    pub(crate) base_url: Url,
13}
14
15impl User {
16    /// Get user details
17    pub fn get(&self, signer_address: impl Into<String>) -> Request<UserResponse, GammaError> {
18        Request::new(
19            self.client.clone(),
20            self.base_url.clone(),
21            "/public-profile",
22        )
23        .query("address", signer_address.into())
24    }
25}
26
27/// User details response
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct UserResponse {
31    /// The user's proxy wallet address (Treasury)
32    #[serde(rename = "proxyWallet")]
33    pub proxy: Option<String>,
34    /// The user's EOA address (Signer)
35    pub address: Option<String>,
36    /// Account ID
37    pub id: Option<String>,
38    /// Username/Display name
39    pub name: Option<String>,
40}