async_source/
async_sources.rs1use newsapi_rs::client::NewsApiClient;
2use newsapi_rs::model::{Country, GetSourcesRequest, Language, NewsCategory};
3use newsapi_rs::retry::RetryStrategy;
4
5#[tokio::main]
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}