pub struct HttpClient { /* private fields */ }Expand description
Shared HTTP client with sensible defaults and rate limiting
Implementations§
Source§impl HttpClient
impl HttpClient
Sourcepub fn new() -> Result<Self, SourceError>
pub fn new() -> Result<Self, SourceError>
Create a new HTTP client with default settings and rate limiting
Sourcepub fn with_user_agent(user_agent: &str) -> Result<Self, SourceError>
pub fn with_user_agent(user_agent: &str) -> Result<Self, SourceError>
Create a new HTTP client with a custom user agent
Sourcepub fn without_rate_limit(user_agent: &str) -> Result<Self, SourceError>
pub fn without_rate_limit(user_agent: &str) -> Result<Self, SourceError>
Create a new HTTP client without rate limiting
Sourcepub fn should_bypass_proxy(&self, url: &str) -> bool
pub fn should_bypass_proxy(&self, url: &str) -> bool
Check if a URL should bypass the proxy
Sourcepub fn with_rate_limit(
user_agent: &str,
requests_per_second: u32,
) -> Result<Self, SourceError>
pub fn with_rate_limit( user_agent: &str, requests_per_second: u32, ) -> Result<Self, SourceError>
Create a new HTTP client with a custom rate limit
Sourcepub fn with_proxy(
user_agent: &str,
http_proxy: Option<String>,
https_proxy: Option<String>,
requests_per_second: u32,
) -> Result<Self, SourceError>
pub fn with_proxy( user_agent: &str, http_proxy: Option<String>, https_proxy: Option<String>, requests_per_second: u32, ) -> Result<Self, SourceError>
Create HTTP client with per-source proxy
Sourcepub fn from_client(client: Arc<Client>) -> Self
pub fn from_client(client: Arc<Client>) -> Self
Create from an existing reqwest Client
Sourcepub fn get(&self, url: &str) -> RateLimitedRequestBuilder
pub fn get(&self, url: &str) -> RateLimitedRequestBuilder
Create a rate-limited GET request builder
Sourcepub fn post(&self, url: &str) -> RateLimitedRequestBuilder
pub fn post(&self, url: &str) -> RateLimitedRequestBuilder
Create a rate-limited POST request builder
Sourcepub async fn download_to_file(
&self,
url: &str,
request: &DownloadRequest,
filename: &str,
) -> Result<DownloadResult, SourceError>
pub async fn download_to_file( &self, url: &str, request: &DownloadRequest, filename: &str, ) -> Result<DownloadResult, SourceError>
Download a file from a URL to the specified path
Sourcepub async fn download_pdf(
&self,
url: &str,
request: &DownloadRequest,
paper_id: &str,
) -> Result<DownloadResult, SourceError>
pub async fn download_pdf( &self, url: &str, request: &DownloadRequest, paper_id: &str, ) -> Result<DownloadResult, SourceError>
Download a PDF with a sanitized filename
Trait Implementations§
Source§impl Clone for HttpClient
impl Clone for HttpClient
Source§fn clone(&self) -> HttpClient
fn clone(&self) -> HttpClient
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HttpClient
impl Debug for HttpClient
Auto Trait Implementations§
impl Freeze for HttpClient
impl !RefUnwindSafe for HttpClient
impl Send for HttpClient
impl Sync for HttpClient
impl Unpin for HttpClient
impl !UnwindSafe for HttpClient
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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