spacetraders-client 0.1.0

Async Rust client for the SpaceTraders API v2 with priority-aware rate limiting and retry
Documentation
use std::num::NonZeroU64;

use crate::client::StClient;
use crate::client::{ClientError, RequestPriority};
use crate::types;

impl StClient {
    pub async fn get_factions(
        &self,
        limit: Option<NonZeroU64>,
        page: Option<NonZeroU64>,
    ) -> Result<types::GetFactionsResponse, ClientError> {
        self.get_factions_with_priority(limit, page, RequestPriority::Normal)
            .await
    }

    pub async fn get_factions_with_priority(
        &self,
        limit: Option<NonZeroU64>,
        page: Option<NonZeroU64>,
        priority: RequestPriority,
    ) -> Result<types::GetFactionsResponse, ClientError> {
        self.send("get_factions", priority, || {
            self.inner.get_factions(limit, page)
        })
        .await
    }

    pub async fn get_faction(
        &self,
        faction_symbol: &str,
    ) -> Result<types::GetFactionResponse, ClientError> {
        self.get_faction_with_priority(faction_symbol, RequestPriority::Normal)
            .await
    }

    pub async fn get_faction_with_priority(
        &self,
        faction_symbol: &str,
        priority: RequestPriority,
    ) -> Result<types::GetFactionResponse, ClientError> {
        self.send("get_faction", priority, || {
            self.inner.get_faction(faction_symbol)
        })
        .await
    }

    pub async fn get_my_factions(
        &self,
        limit: Option<NonZeroU64>,
        page: Option<NonZeroU64>,
    ) -> Result<types::GetMyFactionsResponse, ClientError> {
        self.get_my_factions_with_priority(limit, page, RequestPriority::Normal)
            .await
    }

    pub async fn get_my_factions_with_priority(
        &self,
        limit: Option<NonZeroU64>,
        page: Option<NonZeroU64>,
        priority: RequestPriority,
    ) -> Result<types::GetMyFactionsResponse, ClientError> {
        self.send("get_my_factions", priority, || {
            self.inner.get_my_factions(limit, page)
        })
        .await
    }
}