mod amazon;
mod apple;
mod google;
pub use amazon::*;
pub use apple::*;
pub use google::*;
use crate::entity::{
DataForSeoLabsCategory, DataForSeoLabsIdListItem, DataForSeoLabsLocation, DataForSeoLabsStatus,
};
use crate::{DataForSeoApiResponse, DataForSeoClient};
use serde::{Deserialize, Serialize};
pub struct DataForSeoLabsApi<'a> {
client: &'a DataForSeoClient,
}
impl DataForSeoClient {
pub fn dataforseo_labs(&self) -> DataForSeoLabsApi<'_> {
DataForSeoLabsApi { client: self }
}
}
impl<'a> DataForSeoLabsApi<'a> {
pub fn google(&self) -> DataForSeoLabsApiGoogle<'a> {
DataForSeoLabsApiGoogle {
client: self.client,
}
}
pub fn amazon(&self) -> DataForSeoLabsApiAmazon<'a> {
DataForSeoLabsApiAmazon {
client: self.client,
}
}
pub fn apple(&self) -> DataForSeoLabsApiApple<'a> {
DataForSeoLabsApiApple {
client: self.client,
}
}
pub async fn id_list(
&self,
data: Vec<DataForSeoLabsIdListRequest>,
) -> DataForSeoApiResponse<DataForSeoLabsIdListItem> {
self.client
.http_post("/v3/dataforseo_labs/id_list", &data)
.await
}
pub async fn locations_and_languages(&self) -> DataForSeoApiResponse<DataForSeoLabsLocation> {
self.client
.http_get("/v3/dataforseo_labs/locations_and_languages")
.await
}
pub async fn categories(&self) -> DataForSeoApiResponse<DataForSeoLabsCategory> {
self.client.http_get("/v3/dataforseo_labs/categories").await
}
pub async fn status(&self) -> DataForSeoApiResponse<DataForSeoLabsStatus> {
self.client.http_get("/v3/dataforseo_labs/status").await
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsIdListRequest {
pub datetime_from: String,
pub datetime_to: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_metadata: Option<bool>,
}
impl DataForSeoLabsIdListRequest {
pub fn new(datetime_from: &str, datetime_to: &str) -> DataForSeoLabsIdListRequest {
DataForSeoLabsIdListRequest {
datetime_from: datetime_from.to_string(),
datetime_to: datetime_to.to_string(),
..Default::default()
}
}
}