use crate::DataForSeoApiResponse;
use crate::api::keywords_data::KeywordsDataApiTaskReadyResult;
use crate::api::keywords_data::bing::KeywordsDataApiBing;
use crate::entity::{
KeywordsDataApiBingAudienceEstimation, KeywordsDataApiBingIndustry,
KeywordsDataApiBingJobFunction,
};
use serde::{Deserialize, Serialize};
use serde_json::Value;
impl KeywordsDataApiBing<'_> {
pub async fn audience_estimation_job_functions(
&self,
) -> DataForSeoApiResponse<KeywordsDataApiBingJobFunction> {
self.client
.http_get("/v3/keywords_data/bing/audience_estimation/job_functions")
.await
}
pub async fn audience_estimation_industries(
&self,
) -> DataForSeoApiResponse<KeywordsDataApiBingIndustry> {
self.client
.http_get("/v3/keywords_data/bing/audience_estimation/industries")
.await
}
pub async fn audience_estimation_task_post(
&self,
data: Vec<KeywordsDataApiBingAudienceEstimationTaskPostRequest>,
) -> DataForSeoApiResponse<Value> {
self.client
.http_post(
"/v3/keywords_data/bing/audience_estimation/task_post",
&data,
)
.await
}
pub async fn audience_estimation_tasks_ready(
&self,
) -> DataForSeoApiResponse<KeywordsDataApiTaskReadyResult> {
self.client
.keywords_data()
.task_ready_se("bing/audience_estimation")
.await
}
pub async fn audience_estimation_task_get(
&self,
id: &str,
) -> DataForSeoApiResponse<KeywordsDataApiBingAudienceEstimation> {
self.client
.http_get(&format!(
"/v3/keywords_data/bing/audience_estimation/task_get/{id}"
))
.await
}
pub async fn audience_estimation_live(
&self,
data: Vec<KeywordsDataApiBingAudienceEstimationTaskPostRequest>,
) -> DataForSeoApiResponse<KeywordsDataApiBingAudienceEstimation> {
self.client
.http_post("/v3/keywords_data/bing/audience_estimation/live", &data)
.await
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct KeywordsDataApiBingAudienceEstimationTaskPostRequest {
#[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 age: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bid: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub daily_budget: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub industry: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_function: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
}
impl KeywordsDataApiBingAudienceEstimationTaskPostRequest {
pub fn new() -> Self {
KeywordsDataApiBingAudienceEstimationTaskPostRequest::default()
}
}