GoRegistry

Struct GoRegistry 

Source
pub struct GoRegistry { /* private fields */ }
Expand description

Client for interacting with proxy.golang.org.

Uses the Go module proxy protocol for version lookups and metadata. All requests are cached via the provided HttpCache.

Implementations§

Source§

impl GoRegistry

Source

pub const fn new(cache: Arc<HttpCache>) -> GoRegistry

Creates a new Go registry client with the given HTTP cache.

Source

pub async fn get_versions( &self, module_path: &str, ) -> Result<Vec<GoVersion>, GoError>

Fetches all versions for a module from the /@v/list endpoint.

Returns versions in registry order (not sorted). Includes pseudo-versions.

§Errors

Returns an error if:

  • HTTP request fails
  • Response body is invalid UTF-8
  • Module does not exist (404)
  • Module path is invalid or too long
§Examples
let cache = Arc::new(HttpCache::new());
let registry = GoRegistry::new(cache);

let versions = registry.get_versions("github.com/gin-gonic/gin").await.unwrap();
assert!(!versions.is_empty());
Source

pub async fn get_version_info( &self, module_path: &str, version: &str, ) -> Result<GoVersion, GoError>

Fetches version metadata from the /@v/{version}.info endpoint.

Returns version with timestamp information.

§Errors

Returns an error if:

  • HTTP request fails
  • JSON parsing fails
  • Module path or version string is invalid
§Examples
let cache = Arc::new(HttpCache::new());
let registry = GoRegistry::new(cache);

let info = registry.get_version_info("github.com/gin-gonic/gin", "v1.9.1").await.unwrap();
assert_eq!(info.version, "v1.9.1");
Source

pub async fn get_latest(&self, module_path: &str) -> Result<GoVersion, GoError>

Fetches latest version using the /@latest endpoint.

Returns the latest stable version (non-pseudo).

§Errors

Returns an error if:

  • HTTP request fails
  • JSON parsing fails
  • Module path is invalid
§Examples
let cache = Arc::new(HttpCache::new());
let registry = GoRegistry::new(cache);

let latest = registry.get_latest("github.com/gin-gonic/gin").await.unwrap();
assert!(!latest.is_pseudo);
Source

pub async fn get_go_mod( &self, module_path: &str, version: &str, ) -> Result<String, GoError>

Fetches the go.mod file for a specific version.

Returns the raw content of the go.mod file.

§Errors

Returns an error if:

  • HTTP request fails
  • Response body is invalid UTF-8
  • Module path or version string is invalid
§Examples
let cache = Arc::new(HttpCache::new());
let registry = GoRegistry::new(cache);

let go_mod = registry.get_go_mod("github.com/gin-gonic/gin", "v1.9.1").await.unwrap();
assert!(go_mod.contains("module github.com/gin-gonic/gin"));

Trait Implementations§

Source§

impl Clone for GoRegistry

Source§

fn clone(&self) -> GoRegistry

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Registry for GoRegistry

Source§

fn get_versions<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, GoRegistry: 'async_trait,

Fetches all available versions for a package. Read more
Source§

fn get_latest_matching<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, name: &'life1 str, _req: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, GoRegistry: 'async_trait,

Finds the latest version matching a version requirement. Read more
Source§

fn search<'life0, 'life1, 'async_trait>( &'life0 self, _query: &'life1 str, _limit: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Metadata>>, DepsError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, GoRegistry: 'async_trait,

Searches for packages by name or keywords. Read more
Source§

fn package_url(&self, name: &str) -> String

Package URL for ecosystem (e.g., https://crates.io/crates/serde) Read more
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Downcast to concrete registry type for ecosystem-specific operations

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more