pub struct GitlabApiClient { /* private fields */ }Expand description
Client for fetching repository tags and project releases from a per-call GitLab instance host.
Implementations§
Source§impl GitlabApiClient
impl GitlabApiClient
Sourcepub fn new(
cache: Arc<HttpCache>,
instance_host: Arc<GitlabInstanceHost>,
) -> Self
pub fn new( cache: Arc<HttpCache>, instance_host: Arc<GitlabInstanceHost>, ) -> Self
Creates a new client backed by cache.
Reads GITLAB_TOKEN from the environment for authenticated requests, sent as the
PRIVATE-TOKEN header — but only to the single token host (spec FR-005a, see
crate::host::token_host_origin).
Fetches one page of host’s repository-tags API for project_path.
Requests order_by=version&sort=desc (GitLab 16.0+) — updated ordering sorts by
commit date, so a backport tag cut from an old commit can fall past the page cap
(the same class of hazard deps_core::github::MAX_TAG_PAGES’s doc documents for
GitHub’s lexicographic ordering). An older self-hosted instance answers an unknown
order_by with 400; on such a 400, for any page, this retries once with no
order_by parameter, logs the degradation at debug, and memoizes host’s origin in
degraded_order_by_hosts (H3, #466 review) so every later page of this fetch —
and every subsequent fetch against the same host — skips straight to the fallback URL
instead of re-discovering (and repaying the round trip for) the same 400.
§Errors
Propagates the underlying HTTP/cache error unchanged.
Sourcepub async fn fetch_releases_page(
&self,
host: &GitlabHost,
project_path: &str,
page: u32,
) -> Result<Bytes>
pub async fn fetch_releases_page( &self, host: &GitlabHost, project_path: &str, page: u32, ) -> Result<Bytes>
Fetches one page of host’s project-releases API for project_path.
No order_by=version here (GitLab’s /releases has none) — its default ordering
is release-date descending, which is fine: releases_to_versions (this crate’s own
releases-to-versions conversion step) re-sorts the parsed list newest-first by parsed
semver itself, and crate::component::resolve_component_pin’s FR-007 ladder
likewise selects by parsed semver rather than trusting fetch order — neither pass
depends on API ordering, and catalogs are small.
§Errors
Propagates the underlying HTTP/cache error unchanged.
Trait Implementations§
Source§impl Clone for GitlabApiClient
impl Clone for GitlabApiClient
Source§fn clone(&self) -> GitlabApiClient
fn clone(&self) -> GitlabApiClient
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more