pub struct Aur<'a> { /* private fields */ }Expand description
What: Wrapper for AUR operations using an ArchClient.
Inputs: None (created via ArchClient::aur())
Output: Aur instance that provides AUR operation methods
Details:
- Holds a reference to
ArchClientto access HTTP client and configuration - Provides methods:
search(),info(),comments(),pkgbuild() - All operations use the client’s configured timeout and user agent
- Rate limiting is handled automatically
Implementations§
Source§impl<'a> Aur<'a>
impl<'a> Aur<'a>
Sourcepub async fn search(&self, query: &str) -> Result<Vec<AurPackage>>
pub async fn search(&self, query: &str) -> Result<Vec<AurPackage>>
What: Search for packages in the AUR by name.
Inputs:
query: Search query string.
Output:
Result<Vec<AurPackage>>containing search results, or an error.
Details:
- Uses AUR RPC v5 search endpoint.
- Limits results to 200 packages (AUR default).
- Percent-encodes the query string for URL safety.
- Applies rate limiting for archlinux.org requests.
- Returns empty vector if no results found (not an error).
§Errors
- Returns
Err(ArchToolkitError::Network)if the HTTP request fails - Returns
Err(ArchToolkitError::InvalidInput)if the URL is not from archlinux.org
Sourcepub async fn info(&self, names: &[&str]) -> Result<Vec<AurPackageDetails>>
pub async fn info(&self, names: &[&str]) -> Result<Vec<AurPackageDetails>>
What: Fetch detailed information for one or more AUR packages.
Inputs:
names: Slice of package names to fetch info for.
Output:
Result<Vec<AurPackageDetails>>containing package details, or an error.
Details:
- Uses AUR RPC v5 info endpoint.
- Fetches info for all packages in a single request (more efficient).
- Returns empty vector if no packages found (not an error).
- Applies rate limiting for archlinux.org requests.
§Errors
- Returns
Err(ArchToolkitError::Network)if the HTTP request fails - Returns
Err(ArchToolkitError::InvalidInput)if the URL is not from archlinux.org
Sourcepub async fn comments(&self, pkgname: &str) -> Result<Vec<AurComment>>
pub async fn comments(&self, pkgname: &str) -> Result<Vec<AurComment>>
What: Fetch AUR package comments by scraping the AUR package page.
Inputs:
pkgname: Package name to fetch comments for.
Output:
Result<Vec<AurComment>>with parsed comments sorted by date (latest first);Erron failure.
Details:
- Fetches HTML from
https://aur.archlinux.org/packages/<pkgname> - Uses
scraperto parse HTML and extract comment elements - Parses dates to Unix timestamps for sorting
- Sorts comments by date descending (latest first)
- Handles pinned comments (appear before “Latest Comments” heading)
§Errors
- Returns
Err(ArchToolkitError::Network)if the HTTP request fails - Returns
Err(ArchToolkitError::InvalidInput)if the URL is not from archlinux.org - Returns
Err(ArchToolkitError::Parse)if HTML parsing fails
Sourcepub async fn pkgbuild(&self, package: &str) -> Result<String>
pub async fn pkgbuild(&self, package: &str) -> Result<String>
What: Fetch PKGBUILD content for an AUR package.
Inputs:
package: Package name to fetch PKGBUILD for.
Output:
Result<String>with PKGBUILD text when available;Erron network or lookup failure.
Details:
- Fetches from
https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h={package} - Applies rate limiting (200ms minimum interval between requests)
- Uses timeout from client configuration
- Returns raw PKGBUILD text
§Errors
- Returns
Err(ArchToolkitError::Network)if the HTTP request fails - Returns
Err(ArchToolkitError::InvalidInput)if the URL is not from archlinux.org - Returns
Err(ArchToolkitError::Parse)if rate limiter mutex is poisoned
Trait Implementations§
Source§impl AurApi for Aur<'_>
impl AurApi for Aur<'_>
Source§fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AurPackage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AurPackage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
What: Search for packages in the AUR by name.
Inputs:
query: Search query string
Output:
Result<Vec<AurPackage>>containing search results, or an error
Details:
- Delegates to the underlying search module function
Source§fn info<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
names: &'life1 [&'life2 str],
) -> Pin<Box<dyn Future<Output = Result<Vec<AurPackageDetails>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn info<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
names: &'life1 [&'life2 str],
) -> Pin<Box<dyn Future<Output = Result<Vec<AurPackageDetails>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
What: Fetch detailed information for one or more AUR packages.
Inputs:
names: Slice of package names to fetch info for
Output:
Result<Vec<AurPackageDetails>>containing package details, or an error
Details:
- Delegates to the underlying info module function
Source§fn comments<'life0, 'life1, 'async_trait>(
&'life0 self,
pkgname: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AurComment>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn comments<'life0, 'life1, 'async_trait>(
&'life0 self,
pkgname: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AurComment>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
What: Fetch AUR package comments.
Inputs:
pkgname: Package name to fetch comments for
Output:
Result<Vec<AurComment>>with parsed comments, or an error
Details:
- Delegates to the underlying comments module function
Source§fn pkgbuild<'life0, 'life1, 'async_trait>(
&'life0 self,
package: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn pkgbuild<'life0, 'life1, 'async_trait>(
&'life0 self,
package: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
What: Fetch PKGBUILD content for an AUR package.
Inputs:
package: Package name to fetch PKGBUILD for
Output:
Result<String>with PKGBUILD text, or an error
Details:
- Delegates to the underlying pkgbuild module function
Auto Trait Implementations§
impl<'a> Freeze for Aur<'a>
impl<'a> !RefUnwindSafe for Aur<'a>
impl<'a> Send for Aur<'a>
impl<'a> Sync for Aur<'a>
impl<'a> Unpin for Aur<'a>
impl<'a> !UnwindSafe for Aur<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more