pub struct Source { /* private fields */ }
Expand description
Source representation from NewsAPI
Implementations§
Source§impl Source
impl Source
pub fn get_id(&self) -> Option<&String>
Sourcepub fn get_name(&self) -> &str
pub fn get_name(&self) -> &str
Examples found in repository?
examples/top_headlines.rs (line 71)
50async fn main() {
51 dotenvy::dotenv().ok();
52
53 // Provide your API key here or set it in the environment variable NEWS_API_KEY
54 // let client = NewsApiClient::new("api_key");
55 let client = NewsApiClient::from_env();
56
57 let request = GetTopHeadlinesRequest::builder()
58 .country(Country::US)
59 .category(NewsCategory::Technology)
60 .page_size(5)
61 .build()
62 .unwrap();
63
64 match client.get_top_headlines(&request).await {
65 Ok(response) => {
66 println!("Total Results: {}", response.get_total_results());
67 println!("Articles retrieved: {}", response.get_articles().len());
68
69 for (i, article) in response.get_articles().iter().enumerate() {
70 println!("Article #{}: {}", i + 1, article.get_title());
71 println!(" Source: {}", article.get_source().get_name());
72 println!(" URL: {}", article.get_url());
73 println!();
74 }
75 }
76 Err(err) => {
77 eprintln!(
78 "Error: {}",
79 match err {
80 ApiClientError::InvalidResponse(response) => response.message.clone(),
81 _ => err.to_string(),
82 }
83 );
84 }
85 }
86}
More examples
examples/async_sources.rs (line 27)
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}
examples/everything_search.rs (line 75)
53async fn main() {
54 dotenvy::dotenv().ok();
55
56 // Provide your API key here or set it in the environment variable NEWS_API_KEY
57 // let client = NewsApiClient::new("api_key");
58 let client = NewsApiClient::from_env();
59
60 let everything_request = GetEverythingRequest::builder()
61 .search_term(String::from("Nvidia+NVDA+stock"))
62 .language(Language::EN)
63 .start_date(Utc::now() - chrono::Duration::days(30))
64 .end_date(Utc::now())
65 .page_size(1)
66 .build();
67
68 match client.get_everything(&everything_request).await {
69 Ok(response) => {
70 println!("Total Results: {}", response.get_total_results());
71 println!("Articles retrieved: {}", response.get_articles().len());
72
73 for (i, article) in response.get_articles().iter().enumerate() {
74 println!("Article #{}: {}", i + 1, article.get_title());
75 println!(" Source: {}", article.get_source().get_name());
76 println!(" Published: {}", article.get_published_at());
77 println!(" URL: {}", article.get_url());
78 println!();
79 }
80 }
81 Err(err) => {
82 eprintln!(
83 "Error: {}",
84 match err {
85 ApiClientError::InvalidResponse(response) => response.message.clone(),
86 _ => err.to_string(),
87 }
88 );
89 }
90 }
91}
Sourcepub fn get_description(&self) -> Option<&String>
pub fn get_description(&self) -> Option<&String>
Examples found in repository?
examples/async_sources.rs (line 28)
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}
Sourcepub fn get_url(&self) -> Option<&String>
pub fn get_url(&self) -> Option<&String>
Examples found in repository?
examples/async_sources.rs (line 31)
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}
Sourcepub fn get_category(&self) -> Option<&String>
pub fn get_category(&self) -> Option<&String>
Examples found in repository?
examples/async_sources.rs (line 34)
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 get_language(&self) -> Option<&String>
Sourcepub fn get_country(&self) -> Option<&String>
pub fn get_country(&self) -> Option<&String>
Examples found in repository?
examples/async_sources.rs (line 37)
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}
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Source
impl<'de> Deserialize<'de> for Source
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Source
impl RefUnwindSafe for Source
impl Send for Source
impl Sync for Source
impl Unpin for Source
impl UnwindSafe for Source
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