steam-user 0.1.0

Steam User web client for Rust - HTTP-based Steam Community interactions
Documentation
// TODO: visibility audit pending — many internals are still `pub mod`; tighten to `pub(crate)` in v0.2
//! Steam Community web client for Rust.
//!
//! This crate provides HTTP-based interactions with Steam Community web
//! endpoints, including mobile confirmations, profile management, market
//! operations, and more.
//!
//! # Crate layout
//!
//! Users only need to depend on **`steam-user`**:
//!
//! ```toml
//! [dependencies]
//! steam-user = "0.1"
//! ```
//!
//! The companion crate **`steam-user-impl`** holds the `#[steam_endpoint]`
//! procedural macro and exists only because Rust requires proc-macros to live
//! in a separate crate (the same reason `serde`/`serde_derive`,
//! `tokio`/`tokio-macros`, and `thiserror`/`thiserror-impl` are split). The
//! single macro it exports is re-exported here as
//! [`endpoint::steam_endpoint`] under `#[doc(hidden)]`. **Do not depend on
//! `steam-user-impl` directly** — its API is unstable and version-locked
//! (`=X.Y.Z`) to this crate.
//!
//! # Overview
//!
//! This crate interacts with Steam via regular HTTP requests to
//! steamcommunity.com endpoints. This is useful for:
//!
//! - Managing mobile trade confirmations
//! - Two-factor authentication setup
//! - Profile editing
//! - Market and inventory operations
//! - Group management
//!
//! # Example
//!
//! ```rust,no_run
//! use steam_user::SteamUser;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), steam_user::SteamUserError> {
//!     let mut community = SteamUser::new(&["steamLoginSecure=...", "sessionid=..."])?;
//!
//!     // Check if logged in
//!     let logged_in = community.logged_in().await?;
//!     println!("Logged in: {:?}", logged_in);
//!
//!     Ok(())
//! }
//! ```

mod action;
pub mod client;
pub mod endpoint;
mod error;
pub mod limiter;
mod retry;
pub mod services;
mod session;
pub mod types;
pub mod utils;

pub mod steam_user_api;
mod trait_impl;

#[cfg(any(feature = "remote", feature = "gas"))]
#[macro_use]
mod passthrough_api_macro;

#[cfg(feature = "remote")]
pub mod remote;

pub mod fallback;
#[cfg(feature = "gas")]
pub mod gas;

// Re-export main types
pub use action::{ActionContext, ApiAction};
pub use client::SteamUser;
pub use error::SteamUserError;
pub use fallback::FallbackSteamUser;
pub use session::Session;
pub use steam_user_api::SteamUserApi;
// Re-export steamid for convenience
pub use steamid::SteamID;
// Re-export match history types
pub use types::match_history::{Match, MatchHistoryResponse, MatchHistoryType, MatchPlayer, Team};
// Re-export service types
pub use types::{AliasEntry, AppDetail, AppPriceOverview, BanStatus, BoosterPackEntry, CsgoAccountStats, EconItem, FriendDetails, GameBanData, GemValue, GroupInfo, MarketItem, OwnedApp, PrivacySettings, PrivacyState, ProfileSettings, PublicProfileSummary, SteamGuardStatus, SteamProfile, TwoFactorResponse, UserComment};