Browse Source

Added Serde to handle json marshalling

master
Drew Short 4 years ago
parent
commit
139e1313ea
  1. 80
      Cargo.lock
  2. 2
      Cargo.toml
  3. 107
      src/model.rs

80
Cargo.lock

@ -5,6 +5,8 @@ name = "animebox-sync"
version = "0.1.0"
dependencies = [
"clap",
"serde",
"serde_json",
]
[[package]]
@ -57,18 +59,90 @@ dependencies = [
"libc",
]
[[package]]
name = "itoa"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
[[package]]
name = "libc"
version = "0.2.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f"
[[package]]
name = "proc-macro2"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1502d12e458c49a4c9cbff560d0fe0060c252bc29799ed94ca2ed4bb665a0101"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea"
dependencies = [
"proc-macro2",
]
[[package]]
name = "ryu"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1"
[[package]]
name = "serde"
version = "1.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "strsim"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "syn"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95b5f192649e48a5302a13f2feb224df883b98933222369e4b3b0fe2a5447269"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "textwrap"
version = "0.11.0"
@ -84,6 +158,12 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
[[package]]
name = "unicode-xid"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
[[package]]
name = "vec_map"
version = "0.8.2"

2
Cargo.toml

@ -13,3 +13,5 @@ incremental = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = "2.33.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

107
src/model.rs

@ -1,30 +1,50 @@
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct AnimeBoxesBackup {
backupTime: String,
backupVersion: String,
bannedTags: Vec<String>,
creatorName: String,
creatorVersion: String,
#[serde(rename(serialize = "backupTime", deserialize = "backup_time"))]
backup_time: String,
#[serde(rename(serialize = "backupVersion", deserialize = "backup_version"))]
backup_version: String,
#[serde(rename(serialize = "bannedTags", deserialize = "banned_tags"))]
banned_tags: Vec<String>,
#[serde(rename(serialize = "creatorName", deserialize = "creator_name"))]
creator_name: String,
#[serde(rename(serialize = "creatorVersion", deserialize = "creator_version"))]
creator_version: String,
favorites: Vec<AnimeBoxesFavorite>,
searchHistory: Vec<AnimeBoxesSearch>,
#[serde(rename(serialize = "searchHistory", deserialize = "search_history"))]
search_history: Vec<AnimeBoxesSearch>,
servers: Vec<AnimeBoxesServer>,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavorite {
dateAdded: String,
disableStorage: bool,
enforceOriginalImage: bool,
#[serde(rename(serialize = "dateAdded", deserialize = "date_added"))]
date_added: String,
#[serde(rename(serialize = "disableStorage", deserialize = "disable_storage"))]
disable_storage: bool,
#[serde(rename(
serialize = "enforceOriginalImage",
deserialize = "enforce_original_image"
))]
enforce_original_image: bool,
file: AnimeBoxesFavoriteFile,
has_children: bool,
has_comments: bool,
has_notes: bool,
imageIsVisible: bool,
isFavorite: bool,
isVisible: bool,
#[serde(rename(serialize = "imageIsVisible", deserialize = "image_is_visible"))]
image_is_visible: bool,
#[serde(rename(serialize = "isFavorite", deserialize = "is_favorite"))]
is_favorite: bool,
#[serde(rename(serialize = "isVisible", deserialize = "is_visible"))]
is_visible: bool,
jpeg: Option<AnimeBoxesFavoriteJpeg>,
md5: String,
parent_id: String,
ppost_id: String,
ppostUrl: String,
#[serde(rename(serialize = "ppostUrl", deserialize = "ppost_url"))]
ppost_url: String,
preview: AnimeBoxesFavoritePreview,
rating: String,
sample: AnimeBoxesFavoriteSample,
@ -37,57 +57,86 @@ struct AnimeBoxesFavorite {
tags: String,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoriteFile {
contentType: i8,
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoriteJpeg {
contentType: i8,
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoritePreview {
contentType: i8,
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoriteSample {
contentType: i8,
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesSearch {
itemId: i32,
searchDate: String,
searchText: String,
#[serde(rename(serialize = "itemId", deserialize = "item_id"))]
item_id: i32,
#[serde(rename(serialize = "searchDate", deserialize = "search_date"))]
search_date: String,
#[serde(rename(serialize = "searchText", deserialize = "search_text"))]
search_text: String,
starred: bool,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesServer {
apikey: String,
isDefault: bool,
isSelected: bool,
#[serde(rename(serialize = "isDefault", deserialize = "is_default"))]
is_default: bool,
#[serde(rename(serialize = "isSelected", deserialize = "is_selected"))]
is_selected: bool,
password: String,
passwordKey: String,
ratingFilterEnabled: bool,
realURL: String,
serverId: i16,
serverName: String,
#[serde(rename(serialize = "passwordKey", deserialize = "password_key"))]
password_key: String,
#[serde(rename(
serialize = "ratingFilterEnabled",
deserialize = "rating_filter_enabled"
))]
rating_filter_enabled: bool,
#[serde(rename(serialize = "realURL", deserialize = "real_url"))]
real_url: String,
#[serde(rename(serialize = "serverId", deserialize = "server_id"))]
server_id: i16,
#[serde(rename(serialize = "serverName", deserialize = "server_name"))]
server_name: String,
#[serde(rename(serialize = "type", deserialize = "type_"))]
type_: i16,
url: String,
useNativeAutocomplete: bool,
userName: String,
#[serde(rename(
serialize = "useNativeAutocomplete",
deserialize = "use_native_autocomplete"
))]
use_native_autocomplete: bool,
#[serde(rename(serialize = "userName", deserialize = "user_name"))]
user_name: String,
}
Loading…
Cancel
Save