pub struct NewsApiClientBuilder { /* private fields */ }
Implementations§
Source§impl NewsApiClientBuilder
impl NewsApiClientBuilder
pub fn new() -> Self
pub fn api_key(self, api_key: impl Into<String>) -> Self
pub fn base_url(self, url: impl AsRef<str>) -> Result<Self, ParseError>
Sourcepub fn retry(self, strategy: RetryStrategy, max_retries: usize) -> Self
pub fn retry(self, strategy: RetryStrategy, max_retries: usize) -> Self
Examples found in repository?
examples/async_sources.rs (line 11)
7async fn main() {
8 dotenvy::dotenv().ok();
9
10 let client = NewsApiClient::builder()
11 .retry(RetryStrategy::None, 0)
12 .build()
13 .expect("Failed to build NewsApiClient");
14
15 let sources_request = GetSourcesRequest::builder()
16 .country(Country::CH)
17 .category(NewsCategory::Technology)
18 .language(Language::EN)
19 .build();
20
21 match client.get_sources(&sources_request).await {
22 Ok(response) => {
23 println!("Sources found: {}", response.get_sources().len());
24 println!("Status: {}", response.get_status());
25
26 for (i, source) in response.get_sources().iter().enumerate() {
27 println!("Source #{}: {}", i + 1, source.get_name());
28 if let Some(desc) = source.get_description() {
29 println!(" Description: {}", desc);
30 }
31 if let Some(url) = source.get_url() {
32 println!(" URL: {}", url);
33 }
34 if let Some(category) = source.get_category() {
35 println!(" Category: {}", category);
36 }
37 if let Some(country) = source.get_country() {
38 println!(" Country: {}", country);
39 }
40 println!();
41 }
42 }
43 Err(err) => {
44 eprintln!("Error: {}", err);
45 }
46 }
47}
pub fn from_env() -> Self
Sourcepub fn build(self) -> Result<NewsApiClient<Client>, String>
pub fn build(self) -> Result<NewsApiClient<Client>, String>
Examples found in repository?
examples/async_sources.rs (line 12)
7async fn main() {
8 dotenvy::dotenv().ok();
9
10 let client = NewsApiClient::builder()
11 .retry(RetryStrategy::None, 0)
12 .build()
13 .expect("Failed to build NewsApiClient");
14
15 let sources_request = GetSourcesRequest::builder()
16 .country(Country::CH)
17 .category(NewsCategory::Technology)
18 .language(Language::EN)
19 .build();
20
21 match client.get_sources(&sources_request).await {
22 Ok(response) => {
23 println!("Sources found: {}", response.get_sources().len());
24 println!("Status: {}", response.get_status());
25
26 for (i, source) in response.get_sources().iter().enumerate() {
27 println!("Source #{}: {}", i + 1, source.get_name());
28 if let Some(desc) = source.get_description() {
29 println!(" Description: {}", desc);
30 }
31 if let Some(url) = source.get_url() {
32 println!(" URL: {}", url);
33 }
34 if let Some(category) = source.get_category() {
35 println!(" Category: {}", category);
36 }
37 if let Some(country) = source.get_country() {
38 println!(" Country: {}", country);
39 }
40 println!();
41 }
42 }
43 Err(err) => {
44 eprintln!("Error: {}", err);
45 }
46 }
47}
More examples
examples/async_everything_search.rs (line 11)
6async fn main() {
7 dotenvy::dotenv().ok();
8
9 println!("Example 1: Using the builder pattern");
10 let builder_client = NewsApiClient::builder()
11 .build()
12 .expect("Failed to build NewsApiClient");
13
14 let request1 = GetEverythingRequest::builder()
15 .search_term(String::from("Nvidia+NVDA+stock"))
16 .language(Language::EN)
17 .page_size(1)
18 .build();
19
20 match builder_client.get_everything(&request1).await {
21 Ok(response) => {
22 println!(
23 "Builder client - Total Results: {}",
24 response.get_total_results()
25 );
26 println!("Articles retrieved: {}", response.get_articles().len());
27 if let Some(article) = response.get_articles().first() {
28 println!("First article: {}", article.get_title());
29 }
30 }
31 Err(err) => {
32 eprintln!("Builder client error: {}", err);
33 }
34 }
35
36 println!("\nExample 2: Using from_env");
37 let env_client = NewsApiClient::from_env();
38
39 let request2 = GetEverythingRequest::builder()
40 .search_term(String::from("Bitcoin+crypto"))
41 .language(Language::EN)
42 .page_size(1)
43 .build();
44
45 match env_client.get_everything(&request2).await {
46 Ok(response) => {
47 println!(
48 "Env client - Total Results: {}",
49 response.get_total_results()
50 );
51 println!("Articles retrieved: {}", response.get_articles().len());
52 if let Some(article) = response.get_articles().first() {
53 println!("First article: {}", article.get_title());
54 }
55 }
56 Err(err) => {
57 eprintln!("Env client error: {}", err);
58 }
59 }
60}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for NewsApiClientBuilder
impl RefUnwindSafe for NewsApiClientBuilder
impl Send for NewsApiClientBuilder
impl Sync for NewsApiClientBuilder
impl Unpin for NewsApiClientBuilder
impl UnwindSafe for NewsApiClientBuilder
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