screenshotfreeapi 1.0.0

Official Rust client for ScreenshotFreeAPI — Screenshot-as-a-Service
Documentation
use std::sync::Arc;

use crate::error::Result;
use crate::http::HttpClient;
use crate::types::{
    RefreshRequest, RefreshResponse, RegisterRequest, RegisterResponse, TokenRequest,
    TokenResponse,
};

/// Auth resource — account creation and JWT management.
///
/// These endpoints do **not** require an API key on the request itself; the
/// API key is returned from `register` and the JWT from `token`.
#[derive(Clone)]
pub struct AuthResource {
    pub(crate) http: Arc<HttpClient>,
}

impl AuthResource {
    /// Create a new account and receive a one-time API key.
    ///
    /// > **Important:** The returned `api_key` is shown **once only**. Store it
    /// > securely immediately.
    ///
    /// Corresponds to `POST /auth/register`.
    pub async fn register(&self, request: RegisterRequest) -> Result<RegisterResponse> {
        self.http.post("/auth/register", &request, None).await
    }

    /// Exchange email + password for a management JWT used by billing and
    /// workspace endpoints.
    ///
    /// Corresponds to `POST /auth/token`.
    pub async fn token(&self, request: TokenRequest) -> Result<TokenResponse> {
        self.http.post("/auth/token", &request, None).await
    }

    /// Renew an access token using a refresh token.
    ///
    /// Corresponds to `POST /auth/refresh`.
    pub async fn refresh(&self, request: RefreshRequest) -> Result<RefreshResponse> {
        self.http.post("/auth/refresh", &request, None).await
    }
}