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

Function build_client_with_org

atomic-cli/src/commands/client.rs:117–158  ·  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

115/// Useful for commands that also need to resolve org-scoped state (e.g.
116/// per-org default workspace lookup). Avoids resolving the org twice.
117pub async fn build_client_with_org(
118 org_override: Option<&str>,
119 server_override: Option<&str>,
120) -> CliResult<(StorageClient, String)> {
121 let config = GlobalConfig::load()
122 .map_err(|e| CliError::Internal(anyhow::anyhow!("Failed to load global config: {}", e)))?;
123
124 // Resolve the server profile (named or legacy).
125 let server = config
126 .resolve_server(server_override)
127 .map_err(|e| CliError::Internal(anyhow::anyhow!("{}", e)))?
128 .0;
129
130 let server_url = server.url.clone().ok_or_else(|| {
131 let hint = if let Some(name) = server_override {
132 format!("Server profile '{}' has no URL configured.", name)
133 } else {
134 "Server not configured. Run 'atomic identity register <server-url>' first.".to_string()
135 };
136 CliError::Internal(anyhow::anyhow!("{}", hint))
137 })?;
138
139 let org_slug = resolve_org_with_server(org_override, server)?;
140
141 let base_url = server.org_base_url(&org_slug).ok_or_else(|| {
142 CliError::Internal(anyhow::anyhow!(
143 "Could not build org URL from server config"
144 ))
145 })?;
146
147 // Resolve identity: per-server override → global default.
148 let identity = resolve_identity_for_server(server)?;
149
150 // Log in against the server apex for a JWT bearer token.
151 let bearer_token = crate::commands::token::get_token(&server_url, &identity).await?;
152
153 let client = StorageClient::new(&base_url, &org_slug, &bearer_token).map_err(|e| {
154 CliError::Internal(anyhow::anyhow!("Failed to create storage client: {}", e))
155 })?;
156
157 Ok((client, org_slug))
158}
159
160/// Resolve the identity to authenticate as for a given server profile.
161///

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