use crate::entity::SerpApiGoogleAdsSearchTaskAdvanced;
use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
use serde::{Deserialize, Serialize};
use serde_json::Value;
impl SerpApiGoogle<'_> {
pub async fn ads_search_task_post(
&self,
data: Vec<SerpApiGoogleAdsSearchTaskPostRequest>,
) -> DataForSeoApiResponse<Value> {
self.client
.http_post("/v3/serp/google/ads_search/task_post", &data)
.await
}
pub async fn ads_search_tasks_ready(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
self.client.serp().task_ready_se("google/ads_search").await
}
pub async fn ads_search_task_get_advanced(
&self,
id: &str,
) -> DataForSeoApiResponse<SerpApiGoogleAdsSearchTaskAdvanced> {
self.client
.http_get(format!("/v3/serp/google/ads_search/task_get/advanced/{id}").as_str())
.await
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiGoogleAdsSearchTaskPostRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub advertiser_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_code: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_coordinate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub platform: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_from: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_to: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postback_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postback_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pingback_url: Option<String>,
}
impl SerpApiGoogleAdsSearchTaskPostRequest {
pub fn from_advertiser_ids(advertiser_ids: Vec<String>) -> Self {
SerpApiGoogleAdsSearchTaskPostRequest {
advertiser_ids: Some(advertiser_ids),
..SerpApiGoogleAdsSearchTaskPostRequest::default()
}
}
pub fn from_target<T: Into<String>>(target: T) -> Self {
SerpApiGoogleAdsSearchTaskPostRequest {
target: Some(target.into()),
..SerpApiGoogleAdsSearchTaskPostRequest::default()
}
}
}