replace zip command with zip lib, do languages properly i suppose, and other stuff i do not remember
This commit is contained in:
@@ -12,36 +12,243 @@ pub enum ResponseResult {
|
||||
Ok,
|
||||
}
|
||||
|
||||
// https://api.mangadex.org/docs/3-enumerations/
|
||||
// https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
|
||||
// https://www.loc.gov/standards/iso639-2/php/English_list.php
|
||||
// This is a fucking mess, I hate this. I could have just used a library, but I would have to adapt
|
||||
// it to the special cases which mangadex require.
|
||||
// The two-letter codes are not unique, and the code esentially just choose the first one in the
|
||||
// list. Why have identifiers if they are not unique? Who knows what they were smoking when making
|
||||
// this. Also Why is there Bouth SouthNdebele and Ndebele, South? Who knows? Why is there Bokmål
|
||||
// and Norwegian Bokmål, many questions to ask, but few answers to get. Best part of this is that
|
||||
// the updated ISO pdf is behind a paywall. https://www.iso.org/standard/74575.html
|
||||
// If the code works 98% of the time and is 95% correct I guess that is "good enough".
|
||||
#[derive(Debug)]
|
||||
pub enum Language {
|
||||
Tagalog,
|
||||
SimplifiedChinese,
|
||||
Greek,
|
||||
Persian,
|
||||
TraditionalChinese,
|
||||
Ukranian,
|
||||
Romanian,
|
||||
Abkhazian,
|
||||
Afar,
|
||||
Afrikaans,
|
||||
Akan,
|
||||
Albanian,
|
||||
Amharic,
|
||||
Arabic,
|
||||
German,
|
||||
Vietnamese,
|
||||
French,
|
||||
Turkish,
|
||||
Korean,
|
||||
SpanishLatinAmerican,
|
||||
Hungarian,
|
||||
Aragonese,
|
||||
Armenian,
|
||||
Assamese,
|
||||
Avaric,
|
||||
Avestan,
|
||||
Aymara,
|
||||
Azerbaijani,
|
||||
Bambara,
|
||||
Bashkir,
|
||||
Basque,
|
||||
Belarusian,
|
||||
Bengali,
|
||||
Bislama,
|
||||
Bosnian,
|
||||
BrazilianPortugese,
|
||||
English,
|
||||
Japanese,
|
||||
JapaneseRomaji,
|
||||
Italian,
|
||||
Russian,
|
||||
Indonesian,
|
||||
Breton,
|
||||
Bulgarian,
|
||||
Hebrew,
|
||||
Spanish,
|
||||
Esperanto,
|
||||
Polish,
|
||||
Burmese,
|
||||
Castilian,
|
||||
CastilianSpanish,
|
||||
Catalan,
|
||||
Central,
|
||||
Chamorro,
|
||||
Chechen,
|
||||
Chewa,
|
||||
Chichewa,
|
||||
SimplifiedChinese,
|
||||
TraditionalChinese,
|
||||
Chuang,
|
||||
ChurchSlavic,
|
||||
ChurchSlavonic,
|
||||
Chuvash,
|
||||
Cornish,
|
||||
Corsican,
|
||||
Cree,
|
||||
Croatian,
|
||||
Czech,
|
||||
Danish,
|
||||
Dhivehi,
|
||||
Divehi,
|
||||
Dutch,
|
||||
Dzongkha,
|
||||
English,
|
||||
Esperanto,
|
||||
Estonian,
|
||||
Ewe,
|
||||
Faroese,
|
||||
Fijian,
|
||||
Finnish,
|
||||
Flemish,
|
||||
French,
|
||||
Fulah,
|
||||
Gaelic,
|
||||
Galician,
|
||||
Ganda,
|
||||
Georgian,
|
||||
German,
|
||||
Gikuyu,
|
||||
Greek,
|
||||
Greenlandic,
|
||||
Guarani,
|
||||
Gujarati,
|
||||
Gwic,
|
||||
Haitian,
|
||||
Hausa,
|
||||
Hebrew,
|
||||
Herero,
|
||||
Hindi,
|
||||
Hiri,
|
||||
Hungarian,
|
||||
Icelandic,
|
||||
Ido,
|
||||
Igbo,
|
||||
Indonesian,
|
||||
Interlingua,
|
||||
Interlingue,
|
||||
Inuktitut,
|
||||
Inupiaq,
|
||||
Irish,
|
||||
Italian,
|
||||
Japanese,
|
||||
Javanese,
|
||||
Kalaallisut,
|
||||
Kannada,
|
||||
Kanuri,
|
||||
Kashmiri,
|
||||
Kazakh,
|
||||
Kikuyu,
|
||||
Kinyarwanda,
|
||||
Kirghiz,
|
||||
Komi,
|
||||
Kongo,
|
||||
Korean,
|
||||
Kuanyama,
|
||||
Kurdish,
|
||||
Kwanyama,
|
||||
Kyrgyz,
|
||||
Lao,
|
||||
Latin,
|
||||
LatinAmericanSpanish,
|
||||
Latvian,
|
||||
Letzeburgesch,
|
||||
Limburgan,
|
||||
Limburger,
|
||||
Limburgish,
|
||||
Lingala,
|
||||
Lithuanian,
|
||||
LubaKatanga,
|
||||
Luxembourgish,
|
||||
Macedonian,
|
||||
Malagasy,
|
||||
Malay,
|
||||
Malayalam,
|
||||
Maldivian,
|
||||
Maltese,
|
||||
Manx,
|
||||
Maori,
|
||||
Marathi,
|
||||
Marshallese,
|
||||
MiMoldavian,
|
||||
Moldovan,
|
||||
Mongolian,
|
||||
NNauru,
|
||||
Navaho,
|
||||
Navajo,
|
||||
NdebeleNorth,
|
||||
NdebeleSouth,
|
||||
Ndonga,
|
||||
Nepali,
|
||||
North,
|
||||
Northern,
|
||||
Norwegian,
|
||||
NorwegianBokmål,
|
||||
NorwegianNynorsk,
|
||||
Nuosu,
|
||||
Nyanja,
|
||||
Nynors,
|
||||
Occidental,
|
||||
Occitan,
|
||||
Ojibwa,
|
||||
OldBulgarian,
|
||||
OldChurchSlavonic,
|
||||
OldSlavonic,
|
||||
Oriya,
|
||||
Oromo,
|
||||
Ossetian,
|
||||
Ossetic,
|
||||
Pali,
|
||||
Panjabi,
|
||||
Pashto,
|
||||
Persian,
|
||||
Polish,
|
||||
Portuguese,
|
||||
ProvençPunjabi,
|
||||
Pushto,
|
||||
Quechua,
|
||||
Romanian,
|
||||
RomanizedJapanese,
|
||||
RomanizedKorean,
|
||||
RomanizedChinese,
|
||||
Romansh,
|
||||
Rundi,
|
||||
Russian,
|
||||
Samoan,
|
||||
Sango,
|
||||
Sanskrit,
|
||||
Sardinian,
|
||||
Scottish,
|
||||
Serbian,
|
||||
Shona,
|
||||
Sichuan,
|
||||
Sindhi,
|
||||
Sinhala,
|
||||
Sinhalese,
|
||||
Slovak,
|
||||
Slovenian,
|
||||
Somali,
|
||||
Sotho,
|
||||
SouthNdebele,
|
||||
Spanish,
|
||||
Sundanese,
|
||||
Swahili,
|
||||
Swati,
|
||||
Swedish,
|
||||
Tagalog,
|
||||
Tahitian,
|
||||
Tajik,
|
||||
Tamil,
|
||||
Tatar,
|
||||
Telugu,
|
||||
Thai,
|
||||
Tibetan,
|
||||
Tigrinya,
|
||||
Tonga,
|
||||
Tsonga,
|
||||
Tswana,
|
||||
Turkish,
|
||||
Turkmen,
|
||||
Twi,
|
||||
Uighur,
|
||||
Ukrainian,
|
||||
Urdu,
|
||||
Uyghur,
|
||||
Uzbek,
|
||||
Valencian,
|
||||
Venda,
|
||||
Vietnamese,
|
||||
Volapük,
|
||||
Walloon,
|
||||
Welsh,
|
||||
Western,
|
||||
Wolof,
|
||||
Xhosa,
|
||||
Yiddish,
|
||||
Yoruba,
|
||||
Zhuang,
|
||||
Zulu,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -76,6 +283,7 @@ pub enum State {
|
||||
#[derive(Debug)]
|
||||
pub enum Response {
|
||||
Collection,
|
||||
Entity,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -99,6 +307,13 @@ pub struct SearchResult {
|
||||
pub data: Vec<Manga>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct IdQueryResult {
|
||||
pub result: ResponseResult,
|
||||
pub response: Response,
|
||||
pub data: Manga,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct ChapterImagesContent {
|
||||
@@ -216,6 +431,7 @@ pub struct Chapter {
|
||||
pub relationships: Vec<ChapterRelationShip>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChapterAttributes {
|
||||
pub volume: Option<u32>,
|
||||
pub chapter: Option<f32>,
|
||||
@@ -247,6 +463,13 @@ struct SearchResponse {
|
||||
total: u32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct IdQueryResponse {
|
||||
result: String,
|
||||
response: String,
|
||||
data: ContentData,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct ContentData {
|
||||
id: String,
|
||||
@@ -430,34 +653,232 @@ impl TryInto<Language> for &str {
|
||||
|
||||
fn try_into(self) -> Result<Language, ()> {
|
||||
Ok(match self {
|
||||
"ja" => Language::Japanese,
|
||||
"ja-ro" => Language::JapaneseRomaji,
|
||||
"en" => Language::English,
|
||||
"ru" => Language::Russian,
|
||||
"pt-br" => Language::BrazilianPortugese,
|
||||
"tr" => Language::Turkish,
|
||||
"it" => Language::Italian,
|
||||
"es-la" => Language::SpanishLatinAmerican,
|
||||
"hu" => Language::Hungarian,
|
||||
"bg" => Language::Bulgarian,
|
||||
"id" => Language::Indonesian,
|
||||
"he" => Language::Hebrew,
|
||||
"es" => Language::Spanish,
|
||||
"eo" => Language::Esperanto,
|
||||
"pl" => Language::Polish,
|
||||
"ko" => Language::Korean,
|
||||
"fr" => Language::French,
|
||||
"vi" => Language::Vietnamese,
|
||||
"de" => Language::German,
|
||||
"ab" => Language::Abkhazian,
|
||||
"aa" => Language::Afar,
|
||||
"af" => Language::Afrikaans,
|
||||
"ak" => Language::Akan,
|
||||
"sq" => Language::Albanian,
|
||||
"am" => Language::Amharic,
|
||||
"ar" => Language::Arabic,
|
||||
"ro" => Language::Romanian,
|
||||
"uk" => Language::Ukranian,
|
||||
"zh-hk" => Language::TraditionalChinese,
|
||||
"fa" => Language::Persian,
|
||||
"el" => Language::Greek,
|
||||
"an" => Language::Aragonese,
|
||||
"hy" => Language::Armenian,
|
||||
"as" => Language::Assamese,
|
||||
"av" => Language::Avaric,
|
||||
"ae" => Language::Avestan,
|
||||
"ay" => Language::Aymara,
|
||||
"az" => Language::Azerbaijani,
|
||||
"bm" => Language::Bambara,
|
||||
"ba" => Language::Bashkir,
|
||||
"eu" => Language::Basque,
|
||||
"be" => Language::Belarusian,
|
||||
"bn" => Language::Bengali,
|
||||
"bi" => Language::Bislama,
|
||||
"nb" => Language::NorwegianBokmål,
|
||||
"bs" => Language::Bosnian,
|
||||
"br" => Language::Breton,
|
||||
"bg" => Language::Bulgarian,
|
||||
"my" => Language::Burmese,
|
||||
"es" => Language::Castilian,
|
||||
"ca" => Language::Catalan,
|
||||
"km" => Language::Central,
|
||||
"ch" => Language::Chamorro,
|
||||
"ce" => Language::Chechen,
|
||||
"ny" => Language::Chewa,
|
||||
"ny" => Language::Chichewa,
|
||||
"zh" => Language::SimplifiedChinese,
|
||||
"tl" => Language::Tagalog,
|
||||
"za" => Language::Chuang,
|
||||
"cu" => Language::ChurchSlavic,
|
||||
"cu" => Language::ChurchSlavonic,
|
||||
"cv" => Language::Chuvash,
|
||||
"kw" => Language::Cornish,
|
||||
"co" => Language::Corsican,
|
||||
"cr" => Language::Cree,
|
||||
"hr" => Language::Croatian,
|
||||
"cs" => Language::Czech,
|
||||
"da" => Language::Danish,
|
||||
"dv" => Language::Dhivehi,
|
||||
"dv" => Language::Divehi,
|
||||
"nl" => Language::Dutch,
|
||||
"dz" => Language::Dzongkha,
|
||||
"en" => Language::English,
|
||||
"eo" => Language::Esperanto,
|
||||
"et" => Language::Estonian,
|
||||
"ee" => Language::Ewe,
|
||||
"fo" => Language::Faroese,
|
||||
"fj" => Language::Fijian,
|
||||
"fi" => Language::Finnish,
|
||||
"nl" => Language::Flemish,
|
||||
"fr" => Language::French,
|
||||
"ff" => Language::Fulah,
|
||||
"gd" => Language::Gaelic,
|
||||
"gl" => Language::Galician,
|
||||
"lg" => Language::Ganda,
|
||||
"ka" => Language::Georgian,
|
||||
"de" => Language::German,
|
||||
"ki" => Language::Gikuyu,
|
||||
"el" => Language::Greek,
|
||||
"kl" => Language::Greenlandic,
|
||||
"gn" => Language::Guarani,
|
||||
"gu" => Language::Gujarati,
|
||||
"ht" => Language::Haitian,
|
||||
"ha" => Language::Hausa,
|
||||
"he" => Language::Hebrew,
|
||||
"hz" => Language::Herero,
|
||||
"hi" => Language::Hindi,
|
||||
"ho" => Language::Hiri,
|
||||
"hu" => Language::Hungarian,
|
||||
"is" => Language::Icelandic,
|
||||
"io" => Language::Ido,
|
||||
"ig" => Language::Igbo,
|
||||
"id" => Language::Indonesian,
|
||||
"ia" => Language::Interlingua,
|
||||
"ie" => Language::Interlingue,
|
||||
"iu" => Language::Inuktitut,
|
||||
"ik" => Language::Inupiaq,
|
||||
"ga" => Language::Irish,
|
||||
"it" => Language::Italian,
|
||||
"ja" => Language::Japanese,
|
||||
"jv" => Language::Javanese,
|
||||
"kl" => Language::Kalaallisut,
|
||||
"kn" => Language::Kannada,
|
||||
"kr" => Language::Kanuri,
|
||||
"ks" => Language::Kashmiri,
|
||||
"kk" => Language::Kazakh,
|
||||
"ki" => Language::Kikuyu,
|
||||
"rw" => Language::Kinyarwanda,
|
||||
"ky" => Language::Kirghiz,
|
||||
"kv" => Language::Komi,
|
||||
"kg" => Language::Kongo,
|
||||
"ko" => Language::Korean,
|
||||
"kj" => Language::Kuanyama,
|
||||
"ku" => Language::Kurdish,
|
||||
"kj" => Language::Kwanyama,
|
||||
"ky" => Language::Kyrgyz,
|
||||
"lo" => Language::Lao,
|
||||
"la" => Language::Latin,
|
||||
"lv" => Language::Latvian,
|
||||
"lb" => Language::Letzeburgesch,
|
||||
"li" => Language::Limburgan,
|
||||
"li" => Language::Limburger,
|
||||
"li" => Language::Limburgish,
|
||||
"ln" => Language::Lingala,
|
||||
"lt" => Language::Lithuanian,
|
||||
"lu" => Language::LubaKatanga,
|
||||
"lb" => Language::Luxembourgish,
|
||||
"mk" => Language::Macedonian,
|
||||
"mg" => Language::Malagasy,
|
||||
"ms" => Language::Malay,
|
||||
"ml" => Language::Malayalam,
|
||||
"dv" => Language::Maldivian,
|
||||
"mt" => Language::Maltese,
|
||||
"gv" => Language::Manx,
|
||||
"mi" => Language::Maori,
|
||||
"mr" => Language::Marathi,
|
||||
"mh" => Language::Marshallese,
|
||||
"ro" => Language::MiMoldavian,
|
||||
"ro" => Language::Moldovan,
|
||||
"mn" => Language::Mongolian,
|
||||
"na" => Language::NNauru,
|
||||
"nv" => Language::Navaho,
|
||||
"nv" => Language::Navajo,
|
||||
"nd" => Language::NdebeleNorth,
|
||||
"nr" => Language::NdebeleSouth,
|
||||
"ng" => Language::Ndonga,
|
||||
"ne" => Language::Nepali,
|
||||
"nd" => Language::North,
|
||||
"se" => Language::Northern,
|
||||
"no" => Language::Norwegian,
|
||||
"nb" => Language::NorwegianBokmål,
|
||||
"nn" => Language::NorwegianNynorsk,
|
||||
"ii" => Language::Nuosu,
|
||||
"ny" => Language::Nyanja,
|
||||
"nn" => Language::NorwegianNynorsk,
|
||||
"ie" => Language::Occidental,
|
||||
"oc" => Language::Occitan,
|
||||
"oj" => Language::Ojibwa,
|
||||
"cu" => Language::OldBulgarian,
|
||||
"cu" => Language::OldChurchSlavonic,
|
||||
"cu" => Language::OldSlavonic,
|
||||
"or" => Language::Oriya,
|
||||
"om" => Language::Oromo,
|
||||
"os" => Language::Ossetian,
|
||||
"os" => Language::Ossetic,
|
||||
"pi" => Language::Pali,
|
||||
"pa" => Language::Panjabi,
|
||||
"ps" => Language::Pashto,
|
||||
"fa" => Language::Persian,
|
||||
"pl" => Language::Polish,
|
||||
"pt" => Language::Portuguese,
|
||||
"pa" => Language::ProvençPunjabi,
|
||||
"ps" => Language::Pushto,
|
||||
"qu" => Language::Quechua,
|
||||
"ro" => Language::Romanian,
|
||||
"rm" => Language::Romansh,
|
||||
"rn" => Language::Rundi,
|
||||
"ru" => Language::Russian,
|
||||
"sm" => Language::Samoan,
|
||||
"sg" => Language::Sango,
|
||||
"sa" => Language::Sanskrit,
|
||||
"sc" => Language::Sardinian,
|
||||
"gd" => Language::Scottish,
|
||||
"sr" => Language::Serbian,
|
||||
"sn" => Language::Shona,
|
||||
"ii" => Language::Sichuan,
|
||||
"sd" => Language::Sindhi,
|
||||
"si" => Language::Sinhala,
|
||||
"si" => Language::Sinhalese,
|
||||
"sk" => Language::Slovak,
|
||||
"sl" => Language::Slovenian,
|
||||
"so" => Language::Somali,
|
||||
"st" => Language::Sotho,
|
||||
"es" => Language::Spanish,
|
||||
"su" => Language::Sundanese,
|
||||
"sw" => Language::Swahili,
|
||||
"ss" => Language::Swati,
|
||||
"sv" => Language::Swedish,
|
||||
"tl" => Language::Tagalog,
|
||||
"ty" => Language::Tahitian,
|
||||
"tg" => Language::Tajik,
|
||||
"ta" => Language::Tamil,
|
||||
"tt" => Language::Tatar,
|
||||
"te" => Language::Telugu,
|
||||
"th" => Language::Thai,
|
||||
"bo" => Language::Tibetan,
|
||||
"ti" => Language::Tigrinya,
|
||||
"to" => Language::Tonga,
|
||||
"ts" => Language::Tsonga,
|
||||
"tn" => Language::Tswana,
|
||||
"tr" => Language::Turkish,
|
||||
"tk" => Language::Turkmen,
|
||||
"tw" => Language::Twi,
|
||||
"ug" => Language::Uighur,
|
||||
"uk" => Language::Ukrainian,
|
||||
"ur" => Language::Urdu,
|
||||
"ug" => Language::Uyghur,
|
||||
"uz" => Language::Uzbek,
|
||||
"ca" => Language::Valencian,
|
||||
"ve" => Language::Venda,
|
||||
"vi" => Language::Vietnamese,
|
||||
"vo" => Language::Volapük,
|
||||
"wa" => Language::Walloon,
|
||||
"cy" => Language::Welsh,
|
||||
"fy" => Language::Western,
|
||||
"wo" => Language::Wolof,
|
||||
"xh" => Language::Xhosa,
|
||||
"yi" => Language::Yiddish,
|
||||
"yo" => Language::Yoruba,
|
||||
"za" => Language::Zhuang,
|
||||
"zu" => Language::Zulu,
|
||||
|
||||
"zh-ro" => Language::RomanizedChinese,
|
||||
"zh" => Language::SimplifiedChinese,
|
||||
"zh-hk" => Language::TraditionalChinese,
|
||||
"pt" => Language::Portuguese,
|
||||
"es" => Language::CastilianSpanish,
|
||||
"es-la" => Language::LatinAmericanSpanish,
|
||||
"ja-ro" => Language::RomanizedJapanese,
|
||||
"pt-br" => Language::BrazilianPortugese,
|
||||
|
||||
_ => return Err(()),
|
||||
})
|
||||
}
|
||||
@@ -523,6 +944,7 @@ impl TryInto<Response> for &str {
|
||||
fn try_into(self) -> Result<Response, ()> {
|
||||
match self {
|
||||
"collection" => Ok(Response::Collection),
|
||||
"entity" => Ok(Response::Entity),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
@@ -781,6 +1203,29 @@ fn convert_attributes(
|
||||
})
|
||||
}
|
||||
|
||||
// *****
|
||||
pub fn deserialize_id_query(json: &str) -> IdQueryResult {
|
||||
let id_query_response: IdQueryResponse = match serde_json::from_str(json) {
|
||||
Ok(v) => v,
|
||||
Err(e) => {
|
||||
std::fs::write("out.json", json).unwrap();
|
||||
eprintln!("ERROR: {:#?}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
convert_some_test(id_query_response).unwrap()
|
||||
}
|
||||
|
||||
fn convert_some_test(input: IdQueryResponse) -> Result<IdQueryResult, AttributeConversionError> {
|
||||
Ok(IdQueryResult {
|
||||
result: input.result.as_str().try_into().unwrap(),
|
||||
response: input.response.as_str().try_into().unwrap(),
|
||||
data: convert_data_to_manga(input.data).unwrap(),
|
||||
})
|
||||
}
|
||||
|
||||
// *****
|
||||
|
||||
pub fn deserialize_chapter_feed(json: &str) -> ChapterFeed {
|
||||
let chapter_feed_response: ChapterFeedResponse = match serde_json::from_str(json) {
|
||||
Ok(v) => v,
|
||||
@@ -957,3 +1402,61 @@ pub fn deserialize_chapter_images(json: &str) -> Result<ChapterImages, ChapterIm
|
||||
};
|
||||
Ok(convert_chapter_images(chapter_images).unwrap())
|
||||
}
|
||||
|
||||
fn convert_data_to_manga(m: ContentData) -> Result<Manga, ResponseConversionError> {
|
||||
Ok(Manga {
|
||||
id: Id(m.id.clone()),
|
||||
data_type: (m.type_name.as_str()).try_into().map_err(|_| {
|
||||
ResponseConversionError::AttributeError(AttributeConversionError::DataType(
|
||||
m.type_name.clone(),
|
||||
))
|
||||
})?,
|
||||
attributes: convert_attributes(&m.attributes)
|
||||
.map_err(ResponseConversionError::AttributeError)?,
|
||||
relationships: m
|
||||
.relationships
|
||||
.iter()
|
||||
.map(|m| {
|
||||
Ok(RelationShip {
|
||||
id: Id(m.id.clone()),
|
||||
data_type: (m.type_name.as_str())
|
||||
.try_into()
|
||||
.map_err(|_| AttributeConversionError::DataType(m.type_name.clone()))?,
|
||||
attributes: {
|
||||
if let Some(attributes) = &m.attributes {
|
||||
Some(CoverAttributes {
|
||||
created_at: DateTime::parse_from_rfc3339(&attributes.created_at)
|
||||
.map_err(|_| {
|
||||
AttributeConversionError::CreatedAtDateTime(
|
||||
attributes.created_at.clone(),
|
||||
)
|
||||
})?,
|
||||
updated_at: DateTime::parse_from_rfc3339(&attributes.created_at)
|
||||
.map_err(|_| {
|
||||
AttributeConversionError::CreatedAtDateTime(
|
||||
attributes.created_at.clone(),
|
||||
)
|
||||
})?,
|
||||
// TODO: Something should probably be done here
|
||||
description: String::new(),
|
||||
file_name: Id(attributes.file_name.clone()),
|
||||
locale: (attributes.locale.as_str()).try_into().map_err(|_| {
|
||||
AttributeConversionError::Locale(attributes.locale.clone())
|
||||
})?,
|
||||
version: attributes.version,
|
||||
volume: match &attributes.volume {
|
||||
Some(v) => v.parse().ok(),
|
||||
None => None,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
None
|
||||
}
|
||||
},
|
||||
related: m.related.clone(),
|
||||
})
|
||||
})
|
||||
.collect::<Result<Vec<RelationShip>, AttributeConversionError>>()
|
||||
.map_err(ResponseConversionError::AttributeError)?,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user