use crate::entity::{AppDataApiError, AppDataApiIdList};
use crate::{DataForSeoApiResponse, DataForSeoClient};
use serde::{Deserialize, Serialize};
mod apple;
mod google;
pub use apple::*;
pub use google::*;
pub struct AppDataApi<'a> {
client: &'a DataForSeoClient,
}
impl DataForSeoClient {
pub fn app_data(&self) -> AppDataApi<'_> {
AppDataApi { client: self }
}
}
impl AppDataApi<'_> {
pub async fn id_list(
&self,
data: Vec<AppDataApiIdListPost>,
) -> DataForSeoApiResponse<AppDataApiIdList> {
self.client.http_post("/v3/app_data/id_list", &data).await
}
pub async fn errors(
&self,
data: Vec<AppDataApiErrorsPost>,
) -> DataForSeoApiResponse<AppDataApiError> {
self.client.http_post("/v3/app_data/errors", &data).await
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct AppDataApiIdListPost {
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 AppDataApiIdListPost {
pub fn new(datetime_from: String, datetime_to: String) -> Self {
AppDataApiIdListPost {
datetime_from,
datetime_to,
..AppDataApiIdListPost::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct AppDataApiErrorsPost {
#[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 filtered_function: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub datetime_from: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub datetime_to: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct AppDataApiAppSearchesTaskPostRequest {
pub keyword: String,
#[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 language_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub se_domain: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[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 AppDataApiAppSearchesTaskPostRequest {
pub fn new(keyword: String, location_code: i32, language_code: String) -> Self {
AppDataApiAppSearchesTaskPostRequest {
keyword,
location_code: Some(location_code),
language_code: Some(language_code),
..AppDataApiAppSearchesTaskPostRequest::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct AppDataApiAppListTaskPostRequest {
pub app_collection: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub age_rating: Option<String>,
#[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 language_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[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 AppDataApiAppListTaskPostRequest {
pub fn new(app_collection: String, location_code: i32, language_code: String) -> Self {
AppDataApiAppListTaskPostRequest {
app_collection,
location_code: Some(location_code),
language_code: Some(language_code),
..AppDataApiAppListTaskPostRequest::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct AppDataApiAppInfoTaskPostRequest {
pub app_id: String,
#[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 language_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[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 AppDataApiAppInfoTaskPostRequest {
pub fn new(app_id: String, location_code: i32, language_code: String) -> Self {
AppDataApiAppInfoTaskPostRequest {
app_id,
location_code: Some(location_code),
language_code: Some(language_code),
..AppDataApiAppInfoTaskPostRequest::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct AppDataApiAppReviewsTaskPostRequest {
pub app_id: String,
#[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 language_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[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 AppDataApiAppReviewsTaskPostRequest {
pub fn new(app_id: String, location_code: i32, language_code: String) -> Self {
AppDataApiAppReviewsTaskPostRequest {
app_id,
location_code: Some(location_code),
language_code: Some(language_code),
..AppDataApiAppReviewsTaskPostRequest::default()
}
}
}