poot 0.1.1

API wrapper for Photop.
Documentation
use std::collections::HashMap;

use serde::Deserialize;

use crate::{model::{client_user::{ClientUserRaw, ClientUser}, id::GroupId, group::RawGroup}, context::BASE_API_URL};

impl super::Context {
	pub async fn me(&self) -> Result<ClientUser, reqwest::Error> {
        #[derive(Deserialize)]
        struct GetResponse {
            groups: HashMap<GroupId, RawGroup>,
            user: ClientUserRaw,
        }

        let mut url = BASE_API_URL.join("me").unwrap();
        url.query_pairs_mut()
            .append_pair("ss", &self.simplesocket.get_secure_id()[..]);
        let val = self
            .client
            .get(url)
            .header("auth", self.auth.to_string())
            .send()
            .await?
            .json::<GetResponse>()
            .await?;

        let GetResponse { user, groups } = val;

        Ok(ClientUser {
            id: user.id,
            created_at: user.creation_time,
            infractions: user.infractions,
            last_important_update: user.last_important_update,
            last_login: user.last_login,
            logins: user.logins,
            description: user.description,
            followers: user.followers,
            following: user.following,
            groups: groups.into_iter().map(|(k, v)| v.into_group(k)).collect(),
            username: user.username,
            status: user.status,
            email: user.email,
        })
    }
}