data_for_seo/entity/business_data/
trustpilot.rs1use crate::entity::BusinessDataApiRating;
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7
8#[derive(Debug, Default, Serialize, Deserialize, Clone)]
11pub struct BusinessDataApiTrustpilotSearchTaskPost {
12 pub keyword: String,
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub priority: Option<i32>,
17 #[serde(skip_serializing_if = "Option::is_none")]
19 pub tag: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
22 pub postback_url: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub pingback_url: Option<String>,
26}
27
28impl BusinessDataApiTrustpilotSearchTaskPost {
29 pub fn new<T: Into<String>>(keyword: T) -> Self {
31 BusinessDataApiTrustpilotSearchTaskPost {
32 keyword: keyword.into(),
33 ..BusinessDataApiTrustpilotSearchTaskPost::default()
34 }
35 }
36}
37
38#[derive(Debug, Default, Serialize, Deserialize, Clone)]
41pub struct BusinessDataApiTrustpilotReviewsTaskPost {
42 pub domain: String,
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub depth: Option<i32>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub sort_by: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub priority: Option<i32>,
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub tag: Option<String>,
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub postback_url: Option<String>,
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub pingback_url: Option<String>,
62}
63
64impl BusinessDataApiTrustpilotReviewsTaskPost {
65 pub fn new<T: Into<String>>(domain: T) -> Self {
67 BusinessDataApiTrustpilotReviewsTaskPost {
68 domain: domain.into(),
69 ..BusinessDataApiTrustpilotReviewsTaskPost::default()
70 }
71 }
72}
73
74#[derive(Debug, Default, Serialize, Deserialize, Clone)]
76pub struct BusinessDataApiTrustpilotSearchResult {
77 pub keyword: Option<String>,
79 #[serde(rename = "type")]
81 pub result_type: Option<String>,
82 pub se_domain: Option<String>,
84 pub check_url: Option<String>,
86 pub datetime: Option<String>,
88 pub items_count: Option<i64>,
90 pub items: Option<Vec<BusinessDataApiTrustpilotSearchItem>>,
92}
93
94impl BusinessDataApiTrustpilotSearchResult {
95 pub fn items(&self) -> &[BusinessDataApiTrustpilotSearchItem] {
97 self.items.as_deref().unwrap_or_default()
98 }
99}
100
101#[derive(Debug, Default, Serialize, Deserialize, Clone)]
103pub struct BusinessDataApiTrustpilotSearchItem {
104 #[serde(rename = "type")]
106 pub item_type: Option<String>,
107 pub rank_group: Option<i64>,
109 pub rank_absolute: Option<i64>,
111 pub title: Option<String>,
113 pub domain: Option<String>,
115 pub url: Option<String>,
117 pub description: Option<String>,
119 pub category: Option<String>,
121 pub reviews_count: Option<i64>,
123 pub rating: Option<BusinessDataApiRating>,
125 pub verification: Option<Value>,
127 pub contact_info: Option<Value>,
129}
130
131#[derive(Debug, Default, Serialize, Deserialize, Clone)]
133pub struct BusinessDataApiTrustpilotReviewsResult {
134 pub domain: Option<String>,
136 #[serde(rename = "type")]
138 pub result_type: Option<String>,
139 pub se_domain: Option<String>,
141 pub check_url: Option<String>,
143 pub datetime: Option<String>,
145 pub title: Option<String>,
147 pub location: Option<String>,
149 pub reviews_count: Option<i64>,
151 pub rating: Option<BusinessDataApiRating>,
153 pub items_count: Option<i64>,
155 pub items: Option<Vec<BusinessDataApiTrustpilotReviewItem>>,
157}
158
159impl BusinessDataApiTrustpilotReviewsResult {
160 pub fn items(&self) -> &[BusinessDataApiTrustpilotReviewItem] {
162 self.items.as_deref().unwrap_or_default()
163 }
164}
165
166#[derive(Debug, Default, Serialize, Deserialize, Clone)]
168pub struct BusinessDataApiTrustpilotReviewItem {
169 #[serde(rename = "type")]
171 pub item_type: Option<String>,
172 pub rank_group: Option<i64>,
174 pub rank_absolute: Option<i64>,
176 pub position: Option<String>,
178 pub url: Option<String>,
180 pub rating: Option<BusinessDataApiRating>,
182 pub verified: Option<bool>,
184 pub language: Option<String>,
186 pub timestamp: Option<String>,
188 pub time_of_experience: Option<String>,
190 pub title: Option<String>,
192 pub review_text: Option<String>,
194 pub review_images: Option<Vec<Value>>,
196 pub user_profile: Option<Value>,
198 pub responses: Option<Vec<Value>>,
200 pub likes_count: Option<i64>,
202}