use polyoxide_core::{HttpClient, QueryBuilder, Request};
use serde::{Deserialize, Serialize};
use crate::error::GammaError;
#[derive(Clone)]
pub struct User {
pub(crate) http_client: HttpClient,
}
impl User {
pub fn get(&self, signer_address: impl Into<String>) -> Request<UserResponse, GammaError> {
Request::new(self.http_client.clone(), "/public-profile")
.query("address", signer_address.into())
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UserResponse {
#[serde(rename = "proxyWallet")]
pub proxy: Option<String>,
pub address: Option<String>,
pub id: Option<String>,
pub name: Option<String>,
pub created_at: Option<String>,
pub profile_image: Option<String>,
pub display_username_public: Option<bool>,
pub bio: Option<String>,
pub pseudonym: Option<String>,
pub x_username: Option<String>,
pub verified_badge: Option<bool>,
#[serde(default)]
pub users: Vec<UserInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UserInfo {
pub id: Option<String>,
#[serde(default)]
pub creator: bool,
#[serde(rename = "mod")]
#[serde(default)]
pub moderator: bool,
}