data_for_seo/api/serp/google/
news.rs1use crate::entity::{SerpApiGoogleNewsTaskAdvanced, SerpApiGoogleNewsTaskHtml};
2use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6impl SerpApiGoogle<'_> {
9 pub async fn news_task_post(
11 &self,
12 data: Vec<SerpApiGoogleNewsTaskPostRequest>,
13 ) -> DataForSeoApiResponse<Value> {
14 self.client
15 .http_post("/v3/serp/google/news/task_post", &data)
16 .await
17 }
18 pub async fn news_tasks_ready(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
20 self.client.serp().task_ready_se("google/news").await
21 }
22 pub async fn news_tasks_fixed(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
24 self.client.serp().task_fixed_se("google/news").await
25 }
26 pub async fn news_task_get_advanced(
28 &self,
29 id: &str,
30 ) -> DataForSeoApiResponse<SerpApiGoogleNewsTaskAdvanced> {
31 self.client
32 .http_get(format!("/v3/serp/google/news/task_get/advanced/{id}").as_str())
33 .await
34 }
35 pub async fn news_task_get_html(
37 &self,
38 id: &str,
39 ) -> DataForSeoApiResponse<SerpApiGoogleNewsTaskHtml> {
40 self.client
41 .http_get(format!("/v3/serp/google/news/task_get/html/{id}").as_str())
42 .await
43 }
44 pub async fn news_live_advanced(
46 &self,
47 data: Vec<SerpApiGoogleNewsTaskPostRequest>,
48 ) -> DataForSeoApiResponse<SerpApiGoogleNewsTaskAdvanced> {
49 self.client
50 .http_post("/v3/serp/google/news/live/advanced", &data)
51 .await
52 }
53}
54
55#[derive(Debug, Default, Serialize, Deserialize, Clone)]
58pub struct SerpApiGoogleNewsTaskPostRequest {
59 pub keyword: String,
61 #[serde(skip_serializing_if = "Option::is_none")]
63 pub url: Option<String>,
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub priority: Option<i32>,
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub location_name: Option<String>,
70 pub location_code: i32,
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub language_name: Option<String>,
75 pub language_code: String,
77 #[serde(skip_serializing_if = "Option::is_none")]
79 pub os: Option<String>,
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub calculate_rectangles: Option<bool>,
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub browser_screen_width: Option<i32>,
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub browser_screen_height: Option<i32>,
89 #[serde(skip_serializing_if = "Option::is_none")]
91 pub browser_screen_resolution_ratio: Option<i32>,
92 #[serde(skip_serializing_if = "Option::is_none")]
94 pub se_domain: Option<String>,
95 #[serde(skip_serializing_if = "Option::is_none")]
97 pub depth: Option<i32>,
98 #[serde(skip_serializing_if = "Option::is_none")]
100 pub max_crawl_pages: Option<i32>,
101 #[serde(skip_serializing_if = "Option::is_none")]
103 pub search_param: Option<String>,
104 #[serde(skip_serializing_if = "Option::is_none")]
106 pub tag: Option<String>,
107 #[serde(skip_serializing_if = "Option::is_none")]
109 pub postback_url: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none")]
112 pub postback_data: Option<String>,
113 #[serde(skip_serializing_if = "Option::is_none")]
115 pub pingback_url: Option<String>,
116}
117
118impl SerpApiGoogleNewsTaskPostRequest {
119 pub fn new(language_code: String, location_code: i32) -> Self {
122 SerpApiGoogleNewsTaskPostRequest {
123 language_code,
124 location_code,
125 ..SerpApiGoogleNewsTaskPostRequest::default()
126 }
127 }
128}