use crate::entity::{SerpApiGoogleDatasetInfoAdvanced, SerpApiGoogleDatasetSearchAdvanced};
use crate::{DataForSeoApiResponse, SerpApiGoogle, SerpApiTaskReadyResult};
use serde::{Deserialize, Serialize};
use serde_json::Value;
impl SerpApiGoogle<'_> {
pub async fn dataset_search_task_post(
&self,
data: Vec<SerpApiGoogleDatasetSearchTaskPostRequest>,
) -> DataForSeoApiResponse<Value> {
self.client
.http_post("/v3/serp/google/dataset_search/task_post", &data)
.await
}
pub async fn dataset_search_tasks_ready(
&self,
) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
self.client
.serp()
.task_ready_se("google/dataset_search")
.await
}
pub async fn dataset_search_task_get_advanced(
&self,
id: &str,
) -> DataForSeoApiResponse<SerpApiGoogleDatasetSearchAdvanced> {
self.client
.http_get(format!("/v3/serp/google/dataset_search/task_get/advanced/{id}").as_str())
.await
}
pub async fn dataset_search_live_advanced(
&self,
data: Vec<SerpApiGoogleDatasetSearchTaskPostRequest>,
) -> DataForSeoApiResponse<SerpApiGoogleDatasetSearchAdvanced> {
self.client
.http_post("/v3/serp/google/dataset_search/live/advanced", &data)
.await
}
pub async fn dataset_info_task_post(
&self,
data: Vec<SerpApiGoogleDatasetInfoTaskPostRequest>,
) -> DataForSeoApiResponse<Value> {
self.client
.http_post("/v3/serp/google/dataset_info/task_post", &data)
.await
}
pub async fn dataset_info_tasks_ready(&self) -> DataForSeoApiResponse<SerpApiTaskReadyResult> {
self.client
.serp()
.task_ready_se("google/dataset_info")
.await
}
pub async fn dataset_info_task_get_advanced(
&self,
id: &str,
) -> DataForSeoApiResponse<SerpApiGoogleDatasetInfoAdvanced> {
self.client
.http_get(format!("/v3/serp/google/dataset_info/task_get/advanced/{id}").as_str())
.await
}
pub async fn dataset_info_live_advanced(
&self,
data: Vec<SerpApiGoogleDatasetInfoTaskPostRequest>,
) -> DataForSeoApiResponse<SerpApiGoogleDatasetInfoAdvanced> {
self.client
.http_post("/v3/serp/google/dataset_info/live/advanced", &data)
.await
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiGoogleDatasetSearchTaskPostRequest {
pub keyword: 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 language_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub device: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_updated: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_formats: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usage_rights: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_free: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub topics: Option<Vec<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 SerpApiGoogleDatasetSearchTaskPostRequest {
pub fn new<T: Into<String>>(keyword: T) -> Self {
SerpApiGoogleDatasetSearchTaskPostRequest {
keyword: keyword.into(),
..SerpApiGoogleDatasetSearchTaskPostRequest::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiGoogleDatasetInfoTaskPostRequest {
pub dataset_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub device: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub os: 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 SerpApiGoogleDatasetInfoTaskPostRequest {
pub fn new<T: Into<String>>(dataset_id: T) -> Self {
SerpApiGoogleDatasetInfoTaskPostRequest {
dataset_id: dataset_id.into(),
..SerpApiGoogleDatasetInfoTaskPostRequest::default()
}
}
}