data_for_seo/api/serp/google/
finance.rs1use crate::entity::{
2 SerpApiGoogleFinanceExploreTaskAdvanced, SerpApiGoogleFinanceExploreTaskHtml,
3 SerpApiGoogleFinanceMarketsTaskAdvanced, SerpApiGoogleFinanceMarketsTaskHtml,
4 SerpApiGoogleFinanceQuoteTaskAdvanced, SerpApiGoogleFinanceTickerSearchTaskAdvanced,
5};
6use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
7use serde::{Deserialize, Serialize};
8use serde_json::Value;
9
10impl SerpApiGoogle<'_> {
13 pub async fn finance_explore_task_post(
17 &self,
18 data: Vec<SerpApiGoogleFinanceExploreTaskPostRequest>,
19 ) -> DataForSeoApiResponse<Value> {
20 self.client
21 .http_post("/v3/serp/google/finance_explore/task_post", &data)
22 .await
23 }
24 pub async fn finance_explore_tasks_ready(
26 &self,
27 ) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
28 self.client
29 .serp()
30 .task_ready_se("google/finance_explore")
31 .await
32 }
33 pub async fn finance_explore_task_get_advanced(
35 &self,
36 id: &str,
37 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceExploreTaskAdvanced> {
38 self.client
39 .http_get(format!("/v3/serp/google/finance_explore/task_get/advanced/{id}").as_str())
40 .await
41 }
42 pub async fn finance_explore_task_get_html(
44 &self,
45 id: &str,
46 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceExploreTaskHtml> {
47 self.client
48 .http_get(format!("/v3/serp/google/finance_explore/task_get/html/{id}").as_str())
49 .await
50 }
51 pub async fn finance_explore_live_advanced(
53 &self,
54 data: Vec<SerpApiGoogleFinanceExploreTaskPostRequest>,
55 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceExploreTaskAdvanced> {
56 self.client
57 .http_post("/v3/serp/google/finance_explore/live/advanced", &data)
58 .await
59 }
60
61 pub async fn finance_ticker_search_task_post(
65 &self,
66 data: Vec<SerpApiGoogleFinanceTickerSearchTaskPostRequest>,
67 ) -> DataForSeoApiResponse<Value> {
68 self.client
69 .http_post("/v3/serp/google/finance_ticker_search/task_post", &data)
70 .await
71 }
72 pub async fn finance_ticker_search_tasks_ready(
74 &self,
75 ) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
76 self.client
77 .serp()
78 .task_ready_se("google/finance_ticker_search")
79 .await
80 }
81 pub async fn finance_ticker_search_task_get_advanced(
83 &self,
84 id: &str,
85 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceTickerSearchTaskAdvanced> {
86 self.client
87 .http_get(
88 format!("/v3/serp/google/finance_ticker_search/task_get/advanced/{id}").as_str(),
89 )
90 .await
91 }
92 pub async fn finance_ticker_search_live_advanced(
94 &self,
95 data: Vec<SerpApiGoogleFinanceTickerSearchTaskPostRequest>,
96 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceTickerSearchTaskAdvanced> {
97 self.client
98 .http_post("/v3/serp/google/finance_ticker_search/live/advanced", &data)
99 .await
100 }
101
102 pub async fn finance_markets_task_post(
106 &self,
107 data: Vec<SerpApiGoogleFinanceMarketsTaskPostRequest>,
108 ) -> DataForSeoApiResponse<Value> {
109 self.client
110 .http_post("/v3/serp/google/finance_markets/task_post", &data)
111 .await
112 }
113 pub async fn finance_markets_tasks_ready(
115 &self,
116 ) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
117 self.client
118 .serp()
119 .task_ready_se("google/finance_markets")
120 .await
121 }
122 pub async fn finance_markets_task_get_advanced(
124 &self,
125 id: &str,
126 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceMarketsTaskAdvanced> {
127 self.client
128 .http_get(format!("/v3/serp/google/finance_markets/task_get/advanced/{id}").as_str())
129 .await
130 }
131 pub async fn finance_markets_task_get_html(
133 &self,
134 id: &str,
135 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceMarketsTaskHtml> {
136 self.client
137 .http_get(format!("/v3/serp/google/finance_markets/task_get/html/{id}").as_str())
138 .await
139 }
140
141 pub async fn finance_quote_task_post(
145 &self,
146 data: Vec<SerpApiGoogleFinanceQuoteTaskPostRequest>,
147 ) -> DataForSeoApiResponse<Value> {
148 self.client
149 .http_post("/v3/serp/google/finance_quote/task_post", &data)
150 .await
151 }
152 pub async fn finance_quote_tasks_ready(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
154 self.client
155 .serp()
156 .task_ready_se("google/finance_quote")
157 .await
158 }
159 pub async fn finance_quote_task_get_advanced(
161 &self,
162 id: &str,
163 ) -> DataForSeoApiResponse<SerpApiGoogleFinanceQuoteTaskAdvanced> {
164 self.client
165 .http_get(format!("/v3/serp/google/finance_quote/task_get/advanced/{id}").as_str())
166 .await
167 }
168}
169
170#[derive(Debug, Default, Serialize, Deserialize, Clone)]
173pub struct SerpApiGoogleFinanceExploreTaskPostRequest {
174 #[serde(skip_serializing_if = "Option::is_none")]
176 pub location_name: Option<String>,
177 pub location_code: i32,
179 #[serde(skip_serializing_if = "Option::is_none")]
181 pub language_name: Option<String>,
182 pub language_code: String,
184 #[serde(skip_serializing_if = "Option::is_none")]
186 pub device: Option<String>,
187 #[serde(skip_serializing_if = "Option::is_none")]
189 pub os: Option<String>,
190 #[serde(skip_serializing_if = "Option::is_none")]
192 pub priority: Option<i32>,
193 #[serde(skip_serializing_if = "Option::is_none")]
195 pub news_type: Option<String>,
196 #[serde(skip_serializing_if = "Option::is_none")]
198 pub tag: Option<String>,
199 #[serde(skip_serializing_if = "Option::is_none")]
201 pub postback_url: Option<String>,
202 #[serde(skip_serializing_if = "Option::is_none")]
204 pub postback_data: Option<String>,
205 #[serde(skip_serializing_if = "Option::is_none")]
207 pub pingback_url: Option<String>,
208}
209
210impl SerpApiGoogleFinanceExploreTaskPostRequest {
211 pub fn new(language_code: String, location_code: i32) -> Self {
213 SerpApiGoogleFinanceExploreTaskPostRequest {
214 language_code,
215 location_code,
216 ..SerpApiGoogleFinanceExploreTaskPostRequest::default()
217 }
218 }
219}
220
221#[derive(Debug, Default, Serialize, Deserialize, Clone)]
224pub struct SerpApiGoogleFinanceTickerSearchTaskPostRequest {
225 pub keyword: String,
227 #[serde(skip_serializing_if = "Option::is_none")]
229 pub location_name: Option<String>,
230 pub location_code: i32,
232 #[serde(skip_serializing_if = "Option::is_none")]
234 pub language_name: Option<String>,
235 pub language_code: String,
237 #[serde(skip_serializing_if = "Option::is_none")]
239 pub category: Option<String>,
240 #[serde(skip_serializing_if = "Option::is_none")]
242 pub priority: Option<i32>,
243 #[serde(skip_serializing_if = "Option::is_none")]
245 pub tag: Option<String>,
246 #[serde(skip_serializing_if = "Option::is_none")]
248 pub postback_url: Option<String>,
249 #[serde(skip_serializing_if = "Option::is_none")]
251 pub postback_data: Option<String>,
252 #[serde(skip_serializing_if = "Option::is_none")]
254 pub pingback_url: Option<String>,
255}
256
257impl SerpApiGoogleFinanceTickerSearchTaskPostRequest {
258 pub fn new(language_code: String, location_code: i32) -> Self {
261 SerpApiGoogleFinanceTickerSearchTaskPostRequest {
262 language_code,
263 location_code,
264 ..SerpApiGoogleFinanceTickerSearchTaskPostRequest::default()
265 }
266 }
267}
268
269#[derive(Debug, Default, Serialize, Deserialize, Clone)]
272pub struct SerpApiGoogleFinanceMarketsTaskPostRequest {
273 #[serde(skip_serializing_if = "Option::is_none")]
275 pub location_name: Option<String>,
276 pub location_code: i32,
278 #[serde(skip_serializing_if = "Option::is_none")]
280 pub language_name: Option<String>,
281 pub language_code: String,
283 #[serde(skip_serializing_if = "Option::is_none")]
285 pub device: Option<String>,
286 #[serde(skip_serializing_if = "Option::is_none")]
288 pub os: Option<String>,
289 #[serde(skip_serializing_if = "Option::is_none")]
291 pub market_type: Option<String>,
292 #[serde(skip_serializing_if = "Option::is_none")]
294 pub priority: Option<i32>,
295 #[serde(skip_serializing_if = "Option::is_none")]
297 pub tag: Option<String>,
298 #[serde(skip_serializing_if = "Option::is_none")]
300 pub postback_url: Option<String>,
301 #[serde(skip_serializing_if = "Option::is_none")]
303 pub postback_data: Option<String>,
304 #[serde(skip_serializing_if = "Option::is_none")]
306 pub pingback_url: Option<String>,
307}
308
309impl SerpApiGoogleFinanceMarketsTaskPostRequest {
310 pub fn new(language_code: String, location_code: i32) -> Self {
312 SerpApiGoogleFinanceMarketsTaskPostRequest {
313 language_code,
314 location_code,
315 ..SerpApiGoogleFinanceMarketsTaskPostRequest::default()
316 }
317 }
318}
319
320#[derive(Debug, Default, Serialize, Deserialize, Clone)]
323pub struct SerpApiGoogleFinanceQuoteTaskPostRequest {
324 pub keyword: String,
326 #[serde(skip_serializing_if = "Option::is_none")]
328 pub location_name: Option<String>,
329 pub location_code: i32,
331 #[serde(skip_serializing_if = "Option::is_none")]
333 pub language_name: Option<String>,
334 pub language_code: String,
336 #[serde(skip_serializing_if = "Option::is_none")]
338 pub device: Option<String>,
339 #[serde(skip_serializing_if = "Option::is_none")]
341 pub os: Option<String>,
342 #[serde(skip_serializing_if = "Option::is_none")]
344 pub window: Option<String>,
345 #[serde(skip_serializing_if = "Option::is_none")]
347 pub priority: Option<i32>,
348 #[serde(skip_serializing_if = "Option::is_none")]
350 pub tag: Option<String>,
351 #[serde(skip_serializing_if = "Option::is_none")]
353 pub postback_url: Option<String>,
354 #[serde(skip_serializing_if = "Option::is_none")]
356 pub postback_data: Option<String>,
357 #[serde(skip_serializing_if = "Option::is_none")]
359 pub pingback_url: Option<String>,
360}
361
362impl SerpApiGoogleFinanceQuoteTaskPostRequest {
363 pub fn new(language_code: String, location_code: i32) -> Self {
366 SerpApiGoogleFinanceQuoteTaskPostRequest {
367 language_code,
368 location_code,
369 ..SerpApiGoogleFinanceQuoteTaskPostRequest::default()
370 }
371 }
372}