data_for_seo/api/serp/google/
ads_search.rs1use crate::entity::SerpApiGoogleAdsSearchTaskAdvanced;
2use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6impl SerpApiGoogle<'_> {
9 pub async fn ads_search_task_post(
11 &self,
12 data: Vec<SerpApiGoogleAdsSearchTaskPostRequest>,
13 ) -> DataForSeoApiResponse<Value> {
14 self.client
15 .http_post("/v3/serp/google/ads_search/task_post", &data)
16 .await
17 }
18 pub async fn ads_search_tasks_ready(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
20 self.client.serp().task_ready_se("google/ads_search").await
21 }
22 pub async fn ads_search_task_get_advanced(
24 &self,
25 id: &str,
26 ) -> DataForSeoApiResponse<SerpApiGoogleAdsSearchTaskAdvanced> {
27 self.client
28 .http_get(format!("/v3/serp/google/ads_search/task_get/advanced/{id}").as_str())
29 .await
30 }
31}
32
33#[derive(Debug, Default, Serialize, Deserialize, Clone)]
37pub struct SerpApiGoogleAdsSearchTaskPostRequest {
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub advertiser_ids: Option<Vec<String>>,
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub target: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub priority: Option<i32>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub depth: Option<i32>,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub location_name: Option<String>,
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub location_code: Option<i32>,
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub location_coordinate: Option<String>,
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub platform: Option<String>,
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub format: Option<String>,
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub date_from: Option<String>,
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub date_to: Option<String>,
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub tag: Option<String>,
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub postback_url: Option<String>,
77 #[serde(skip_serializing_if = "Option::is_none")]
79 pub postback_data: Option<String>,
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub pingback_url: Option<String>,
83}
84
85impl SerpApiGoogleAdsSearchTaskPostRequest {
86 pub fn from_advertiser_ids(advertiser_ids: Vec<String>) -> Self {
88 SerpApiGoogleAdsSearchTaskPostRequest {
89 advertiser_ids: Some(advertiser_ids),
90 ..SerpApiGoogleAdsSearchTaskPostRequest::default()
91 }
92 }
93 pub fn from_target<T: Into<String>>(target: T) -> Self {
95 SerpApiGoogleAdsSearchTaskPostRequest {
96 target: Some(target.into()),
97 ..SerpApiGoogleAdsSearchTaskPostRequest::default()
98 }
99 }
100}