MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / build_client_with_org

Function build_client_with_org

atomic-cli/src/commands/client.rs:189–230  ·  view source on GitHub ↗

Build a [`StorageClient`] and return the resolved org slug alongside it. Useful for commands that also need to resolve org-scoped state (e.g. per-org default workspace lookup). Avoids resolving the org twice.

(
    org_override: Option<&str>,
    server_override: Option<&str>,
)

Source from the content-addressed store, hash-verified

187/// Useful for commands that also need to resolve org-scoped state (e.g.
188/// per-org default workspace lookup). Avoids resolving the org twice.
189pub async fn build_client_with_org(
190 org_override: Option<&str>,
191 server_override: Option<&str>,
192) -> CliResult<(StorageClient, String)> {
193 let config = GlobalConfig::load()
194 .map_err(|e| CliError::Internal(anyhow::anyhow!("Failed to load global config: {}", e)))?;
195
196 // Resolve the server profile (named or legacy).
197 let server = config
198 .resolve_server(server_override)
199 .map_err(|e| CliError::Internal(anyhow::anyhow!("{}", e)))?
200 .0;
201
202 let server_url = server.url.clone().ok_or_else(|| {
203 let hint = if let Some(name) = server_override {
204 format!("Server profile '{}' has no URL configured.", name)
205 } else {
206 "Server not configured. Run 'atomic identity register <server-url>' first.".to_string()
207 };
208 CliError::Internal(anyhow::anyhow!("{}", hint))
209 })?;
210
211 let org_slug = resolve_org_with_server(org_override, server)?;
212
213 let base_url = server.org_base_url(&org_slug).ok_or_else(|| {
214 CliError::Internal(anyhow::anyhow!(
215 "Could not build org URL from server config"
216 ))
217 })?;
218
219 // Resolve identity: per-server override → global default.
220 let identity = resolve_identity_for_server(server)?;
221
222 // Log in against the server apex for a JWT bearer token.
223 let bearer_token = crate::commands::token::get_token(&server_url, &identity).await?;
224
225 let client = StorageClient::new(&base_url, &org_slug, &bearer_token).map_err(|e| {
226 CliError::Internal(anyhow::anyhow!("Failed to create storage client: {}", e))
227 })?;
228
229 Ok((client, org_slug))
230}
231
232/// Resolve the identity to authenticate as for a given server profile.
233///

Callers 7

build_clientFunction · 0.85
runMethod · 0.85
verify_workspace_existsFunction · 0.85
runMethod · 0.85
executeMethod · 0.85
runMethod · 0.85
verify_org_existsFunction · 0.85

Calls 6

resolve_org_with_serverFunction · 0.85
get_tokenFunction · 0.85
resolve_serverMethod · 0.80
org_base_urlMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected