pub struct Client { /* private fields */ }Expand description
Thin async HTTP client for the App Store Connect API. Handles JWT minting (cached and refreshed automatically) and JSON:API request/response plumbing.
Resource-specific calls live in the domain crates as extension traits on
this type: smbcloud-ascapi-aso for App Metadata, smbcloud-ascapi-signing
for certificates. Client::request, Client::request_no_content, and
Client::upload_bytes are the low-level seam those traits build on, and
are public for that reason rather than because callers should reach for
them directly.
Implementations§
Source§impl Client
impl Client
pub fn new(api_key: ApiKey) -> Self
Sourcepub fn with_base_url(self, base_url: impl Into<String>) -> Self
pub fn with_base_url(self, base_url: impl Into<String>) -> Self
Override the API host — only meaningful for pointing the client at a mock server in tests.
Sourcepub async fn request<B: Serialize, T: DeserializeOwned>(
&self,
method: Method,
path: &str,
query: &[(&str, &str)],
body: Option<&B>,
) -> Result<T>
pub async fn request<B: Serialize, T: DeserializeOwned>( &self, method: Method, path: &str, query: &[(&str, &str)], body: Option<&B>, ) -> Result<T>
Send a request and decode a JSON:API response body into T. Use
request_no_content instead for calls (typically DELETE) that
return an empty 204 body.
Sourcepub async fn request_no_content<B: Serialize>(
&self,
method: Method,
path: &str,
query: &[(&str, &str)],
body: Option<&B>,
) -> Result<()>
pub async fn request_no_content<B: Serialize>( &self, method: Method, path: &str, query: &[(&str, &str)], body: Option<&B>, ) -> Result<()>
Send a request that returns no body on success (typically DELETE).
Sourcepub async fn upload_bytes(
&self,
method: Method,
url: &str,
headers: &[(String, String)],
body: Vec<u8>,
) -> Result<()>
pub async fn upload_bytes( &self, method: Method, url: &str, headers: &[(String, String)], body: Vec<u8>, ) -> Result<()>
PUTs a raw byte body to a pre-signed asset-upload URL (as returned by
e.g. appScreenshots.uploadOperations). Unlike Client::request,
this does not prefix base_url or attach the ASC bearer token —
upload URLs are pre-signed and carry their own auth in
request_headers; sending our JWT alongside would be wrong for a
host that isn’t api.appstoreconnect.apple.com.