use crate::entity::BusinessDataApiRating;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct BusinessDataApiTrustpilotSearchTaskPost {
pub keyword: 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 pingback_url: Option<String>,
}
impl BusinessDataApiTrustpilotSearchTaskPost {
pub fn new<T: Into<String>>(keyword: T) -> Self {
BusinessDataApiTrustpilotSearchTaskPost {
keyword: keyword.into(),
..BusinessDataApiTrustpilotSearchTaskPost::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct BusinessDataApiTrustpilotReviewsTaskPost {
pub domain: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_by: 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 pingback_url: Option<String>,
}
impl BusinessDataApiTrustpilotReviewsTaskPost {
pub fn new<T: Into<String>>(domain: T) -> Self {
BusinessDataApiTrustpilotReviewsTaskPost {
domain: domain.into(),
..BusinessDataApiTrustpilotReviewsTaskPost::default()
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct BusinessDataApiTrustpilotSearchResult {
pub keyword: Option<String>,
#[serde(rename = "type")]
pub result_type: Option<String>,
pub se_domain: Option<String>,
pub check_url: Option<String>,
pub datetime: Option<String>,
pub items_count: Option<i64>,
pub items: Option<Vec<BusinessDataApiTrustpilotSearchItem>>,
}
impl BusinessDataApiTrustpilotSearchResult {
pub fn items(&self) -> &[BusinessDataApiTrustpilotSearchItem] {
self.items.as_deref().unwrap_or_default()
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct BusinessDataApiTrustpilotSearchItem {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub title: Option<String>,
pub domain: Option<String>,
pub url: Option<String>,
pub description: Option<String>,
pub category: Option<String>,
pub reviews_count: Option<i64>,
pub rating: Option<BusinessDataApiRating>,
pub verification: Option<Value>,
pub contact_info: Option<Value>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct BusinessDataApiTrustpilotReviewsResult {
pub domain: Option<String>,
#[serde(rename = "type")]
pub result_type: Option<String>,
pub se_domain: Option<String>,
pub check_url: Option<String>,
pub datetime: Option<String>,
pub title: Option<String>,
pub location: Option<String>,
pub reviews_count: Option<i64>,
pub rating: Option<BusinessDataApiRating>,
pub items_count: Option<i64>,
pub items: Option<Vec<BusinessDataApiTrustpilotReviewItem>>,
}
impl BusinessDataApiTrustpilotReviewsResult {
pub fn items(&self) -> &[BusinessDataApiTrustpilotReviewItem] {
self.items.as_deref().unwrap_or_default()
}
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct BusinessDataApiTrustpilotReviewItem {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub position: Option<String>,
pub url: Option<String>,
pub rating: Option<BusinessDataApiRating>,
pub verified: Option<bool>,
pub language: Option<String>,
pub timestamp: Option<String>,
pub time_of_experience: Option<String>,
pub title: Option<String>,
pub review_text: Option<String>,
pub review_images: Option<Vec<Value>>,
pub user_profile: Option<Value>,
pub responses: Option<Vec<Value>>,
pub likes_count: Option<i64>,
}