netscape_bookmark_parser 0.1.4

A Netspace bookmark parser for Rust
Documentation

use serde::{Serialize, Deserialize};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Bookmark {
    pub checksum: String,
    pub roots: Roots,
    pub sync_metadata: String,
    pub version: i64,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Roots {
    pub bookmark_bar: BookmarkBar,
    pub other: BookmarkBar,
    pub synced: BookmarkBar,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BookmarkBar {
    pub children: Vec<BookmarkBarChild>,
    pub date_added: String,
    pub date_last_used: String,
    pub date_modified: String,
    pub guid: String,
    pub id: String,
    pub name: String,
    pub source: String,
    #[serde(rename = "type")]
    pub bookmark_bar_type: Type,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Type {
    Folder,
    Url,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BookmarkBarChild {
    pub children: Vec<PurpleChild>,
    pub date_added: String,
    pub date_last_used: String,
    pub date_modified: String,
    pub guid: String,
    pub id: String,
    pub name: String,
    pub source: Source,
    #[serde(rename = "type")]
    pub child_type: Type,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PurpleChild {
    pub date_added: String,
    pub date_last_used: String,
    pub guid: String,
    pub id: String,
    pub name: String,
    pub show_icon: Option<bool>,
    pub source: Source,
    #[serde(rename = "type")]
    pub child_type: Type,
    pub url: Option<String>,
    pub visit_count: Option<i64>,
    pub children: Option<Vec<FluffyChild>>,
    pub date_modified: Option<String>,
    pub meta_info: Option<MetaInfo>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FluffyChild {
    pub date_added: String,
    pub date_last_used: String,
    pub guid: String,
    pub id: String,
    pub name: String,
    pub show_icon: Option<bool>,
    pub source: Source,
    #[serde(rename = "type")]
    pub child_type: Type,
    pub url: Option<String>,
    pub visit_count: Option<i64>,
    pub children: Option<Vec<FluffyChild>>,
    pub date_modified: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Source {
    #[serde(rename = "import_fre")]
    ImportFre,
    #[serde(rename = "user_add")]
    UserAdd,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct MetaInfo {
    pub power_bookmark_meta: String,
}