use crate::entity::OnPageDataApiCrawlStatus;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentParsing {
pub crawl_progress: Option<String>,
pub crawl_status: Option<OnPageDataApiCrawlStatus>,
pub items_count: Option<i64>,
pub items: Option<Vec<OnPageDataApiContentParsingItem>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentParsingItem {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub fetch_time: Option<String>,
pub status_code: Option<i32>,
pub page_content: Option<OnPageDataApiPageContent>,
pub page_as_markdown: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiPageContent {
pub header: Option<OnPageDataApiContentSection>,
pub footer: Option<OnPageDataApiContentSection>,
pub main_topic: Option<Vec<OnPageDataApiContentTopic>>,
pub secondary_topic: Option<Vec<OnPageDataApiContentTopic>>,
pub ratings: Option<Vec<OnPageDataApiContentRating>>,
pub offers: Option<Vec<OnPageDataApiContentOffer>>,
pub comments: Option<Vec<OnPageDataApiContentComment>>,
pub contacts: Option<OnPageDataApiContentContacts>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentSection {
pub primary_content: Option<Vec<OnPageDataApiContentElement>>,
pub secondary_content: Option<Vec<OnPageDataApiContentElement>>,
pub table_content: Option<Vec<OnPageDataApiContentTable>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentTopic {
pub h_title: Option<String>,
pub main_title: Option<String>,
pub author: Option<String>,
pub language: Option<String>,
pub level: Option<String>,
pub primary_content: Option<Vec<OnPageDataApiContentElement>>,
pub secondary_content: Option<Vec<OnPageDataApiContentElement>>,
pub table_content: Option<Vec<OnPageDataApiContentTable>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentElement {
pub text: Option<String>,
pub url: Option<String>,
pub urls: Option<Vec<OnPageDataApiContentUrl>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentUrl {
pub url: Option<String>,
pub anchor_text: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentTable {
pub header: Option<Vec<Value>>,
pub body: Option<Vec<Value>>,
pub footer: Option<Vec<Value>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentRating {
pub name: Option<String>,
pub rating_value: Option<f64>,
pub max_rating_value: Option<f64>,
pub rating_count: Option<i64>,
pub relative_rating: Option<f64>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentOffer {
pub name: Option<String>,
pub price: Option<f64>,
pub price_currency: Option<String>,
pub price_valid_until: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentComment {
pub rating: Option<OnPageDataApiContentRating>,
pub title: Option<String>,
pub publish_date: Option<String>,
pub author: Option<String>,
pub primary_content: Option<Vec<OnPageDataApiContentElement>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct OnPageDataApiContentContacts {
pub telephones: Option<Vec<String>>,
pub emails: Option<Vec<String>>,
}