data_for_seo/api/serp/google/
dataset.rs1use crate::entity::{SerpApiGoogleDatasetInfoAdvanced, SerpApiGoogleDatasetSearchAdvanced};
2use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6impl SerpApiGoogle<'_> {
9 pub async fn dataset_search_task_post(
11 &self,
12 data: Vec<SerpApiGoogleDatasetSearchTaskPostRequest>,
13 ) -> DataForSeoApiResponse<Value> {
14 self.client
15 .http_post("/v3/serp/google/dataset_search/task_post", &data)
16 .await
17 }
18 pub async fn dataset_search_tasks_ready(
20 &self,
21 ) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
22 self.client
23 .serp()
24 .task_ready_se("google/dataset_search")
25 .await
26 }
27 pub async fn dataset_search_task_get_advanced(
29 &self,
30 id: &str,
31 ) -> DataForSeoApiResponse<SerpApiGoogleDatasetSearchAdvanced> {
32 self.client
33 .http_get(format!("/v3/serp/google/dataset_search/task_get/advanced/{id}").as_str())
34 .await
35 }
36 pub async fn dataset_search_live_advanced(
38 &self,
39 data: Vec<SerpApiGoogleDatasetSearchTaskPostRequest>,
40 ) -> DataForSeoApiResponse<SerpApiGoogleDatasetSearchAdvanced> {
41 self.client
42 .http_post("/v3/serp/google/dataset_search/live/advanced", &data)
43 .await
44 }
45
46 pub async fn dataset_info_task_post(
48 &self,
49 data: Vec<SerpApiGoogleDatasetInfoTaskPostRequest>,
50 ) -> DataForSeoApiResponse<Value> {
51 self.client
52 .http_post("/v3/serp/google/dataset_info/task_post", &data)
53 .await
54 }
55 pub async fn dataset_info_tasks_ready(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
57 self.client
58 .serp()
59 .task_ready_se("google/dataset_info")
60 .await
61 }
62 pub async fn dataset_info_task_get_advanced(
64 &self,
65 id: &str,
66 ) -> DataForSeoApiResponse<SerpApiGoogleDatasetInfoAdvanced> {
67 self.client
68 .http_get(format!("/v3/serp/google/dataset_info/task_get/advanced/{id}").as_str())
69 .await
70 }
71 pub async fn dataset_info_live_advanced(
73 &self,
74 data: Vec<SerpApiGoogleDatasetInfoTaskPostRequest>,
75 ) -> DataForSeoApiResponse<SerpApiGoogleDatasetInfoAdvanced> {
76 self.client
77 .http_post("/v3/serp/google/dataset_info/live/advanced", &data)
78 .await
79 }
80}
81
82#[derive(Debug, Default, Serialize, Deserialize, Clone)]
85pub struct SerpApiGoogleDatasetSearchTaskPostRequest {
86 pub keyword: String,
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub priority: Option<i32>,
91 #[serde(skip_serializing_if = "Option::is_none")]
93 pub depth: Option<i32>,
94 #[serde(skip_serializing_if = "Option::is_none")]
96 pub language_name: Option<String>,
97 #[serde(skip_serializing_if = "Option::is_none")]
99 pub language_code: Option<String>,
100 #[serde(skip_serializing_if = "Option::is_none")]
102 pub device: Option<String>,
103 #[serde(skip_serializing_if = "Option::is_none")]
105 pub last_updated: Option<String>,
106 #[serde(skip_serializing_if = "Option::is_none")]
108 pub file_formats: Option<Vec<String>>,
109 #[serde(skip_serializing_if = "Option::is_none")]
111 pub usage_rights: Option<String>,
112 #[serde(skip_serializing_if = "Option::is_none")]
114 pub is_free: Option<bool>,
115 #[serde(skip_serializing_if = "Option::is_none")]
117 pub topics: Option<Vec<String>>,
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub tag: Option<String>,
121 #[serde(skip_serializing_if = "Option::is_none")]
123 pub postback_url: Option<String>,
124 #[serde(skip_serializing_if = "Option::is_none")]
126 pub postback_data: Option<String>,
127 #[serde(skip_serializing_if = "Option::is_none")]
129 pub pingback_url: Option<String>,
130}
131
132impl SerpApiGoogleDatasetSearchTaskPostRequest {
133 pub fn new<T: Into<String>>(keyword: T) -> Self {
135 SerpApiGoogleDatasetSearchTaskPostRequest {
136 keyword: keyword.into(),
137 ..SerpApiGoogleDatasetSearchTaskPostRequest::default()
138 }
139 }
140}
141
142#[derive(Debug, Default, Serialize, Deserialize, Clone)]
145pub struct SerpApiGoogleDatasetInfoTaskPostRequest {
146 pub dataset_id: String,
148 #[serde(skip_serializing_if = "Option::is_none")]
150 pub priority: Option<i32>,
151 #[serde(skip_serializing_if = "Option::is_none")]
153 pub language_name: Option<String>,
154 #[serde(skip_serializing_if = "Option::is_none")]
156 pub language_code: Option<String>,
157 #[serde(skip_serializing_if = "Option::is_none")]
159 pub device: Option<String>,
160 #[serde(skip_serializing_if = "Option::is_none")]
162 pub os: Option<String>,
163 #[serde(skip_serializing_if = "Option::is_none")]
165 pub tag: Option<String>,
166 #[serde(skip_serializing_if = "Option::is_none")]
168 pub postback_url: Option<String>,
169 #[serde(skip_serializing_if = "Option::is_none")]
171 pub postback_data: Option<String>,
172 #[serde(skip_serializing_if = "Option::is_none")]
174 pub pingback_url: Option<String>,
175}
176
177impl SerpApiGoogleDatasetInfoTaskPostRequest {
178 pub fn new<T: Into<String>>(dataset_id: T) -> Self {
180 SerpApiGoogleDatasetInfoTaskPostRequest {
181 dataset_id: dataset_id.into(),
182 ..SerpApiGoogleDatasetInfoTaskPostRequest::default()
183 }
184 }
185}