pub mod webapi; use protobuf::MessageFull; pub use webapi::WebApiTransport; use crate::steamapi::{ApiRequest, ApiResponse, BuildableRequest}; pub trait Transport { fn send_request( &self, req: ApiRequest, ) -> Result, TransportError>; fn close(&mut self); } #[derive(Debug, thiserror::Error)] pub enum TransportError { #[error("Transport failed to parse response headers")] HeaderParseFailure { header: String, #[source] source: anyhow::Error, }, #[error("Transport failed to parse response body")] ProtobufError(#[from] protobuf::Error), #[error("Unauthorized: Access token is missing or invalid")] Unauthorized, #[error("NetworkFailure: Transport failed to make request: {0}")] NetworkFailure(#[from] reqwest::Error), #[error("Unexpected error when transport was making request: {0}")] Unknown(#[from] anyhow::Error), }