#![allow(unused_qualifications)] #[cfg(any(feature = "client", feature = "server"))] use crate::header; use crate::models; // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for AuthOidc - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into AuthOidc - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct AuthOidc { /// Fatcat-specific short name (slug) for remote service being used for authentication. #[serde(rename = "provider")] pub provider: String, /// `SUB` from OIDC protocol. Usually a URL. #[serde(rename = "sub")] pub sub: String, /// `ISS` from OIDC protocol. Usually a stable account username, number, or identifier. #[serde(rename = "iss")] pub iss: String, /// What it sounds like; returned by OIDC, and used as a hint when creating new editor accounts. Fatcat usernames are usually this string with the `provider` slug as a suffix, though some munging may occur. #[serde(rename = "preferred_username")] pub preferred_username: String, } impl AuthOidc { pub fn new(provider: String, sub: String, iss: String, preferred_username: String) -> AuthOidc { AuthOidc { provider: provider, sub: sub, iss: iss, preferred_username: preferred_username, } } } /// Converts the AuthOidc value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for AuthOidc { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("provider".to_string()); params.push(self.provider.to_string()); params.push("sub".to_string()); params.push(self.sub.to_string()); params.push("iss".to_string()); params.push(self.iss.to_string()); params.push("preferred_username".to_string()); params.push(self.preferred_username.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a AuthOidc value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for AuthOidc { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub provider: Vec, pub sub: Vec, pub iss: Vec, pub preferred_username: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing AuthOidc".to_string(), ) } }; if let Some(key) = key_result { match key { "provider" => intermediate_rep .provider .push(String::from_str(val).map_err(|x| format!("{}", x))?), "sub" => intermediate_rep .sub .push(String::from_str(val).map_err(|x| format!("{}", x))?), "iss" => intermediate_rep .iss .push(String::from_str(val).map_err(|x| format!("{}", x))?), "preferred_username" => intermediate_rep .preferred_username .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing AuthOidc".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(AuthOidc { provider: intermediate_rep .provider .into_iter() .next() .ok_or("provider missing in AuthOidc".to_string())?, sub: intermediate_rep .sub .into_iter() .next() .ok_or("sub missing in AuthOidc".to_string())?, iss: intermediate_rep .iss .into_iter() .next() .ok_or("iss missing in AuthOidc".to_string())?, preferred_username: intermediate_rep .preferred_username .into_iter() .next() .ok_or("preferred_username missing in AuthOidc".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for AuthOidcResult - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into AuthOidcResult - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct AuthOidcResult { #[serde(rename = "editor")] pub editor: models::Editor, #[serde(rename = "token")] pub token: String, } impl AuthOidcResult { pub fn new(editor: models::Editor, token: String) -> AuthOidcResult { AuthOidcResult { editor: editor, token: token, } } } /// Converts the AuthOidcResult value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for AuthOidcResult { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editor in query parameter serialization params.push("token".to_string()); params.push(self.token.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a AuthOidcResult value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for AuthOidcResult { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editor: Vec, pub token: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing AuthOidcResult".to_string(), ) } }; if let Some(key) = key_result { match key { "editor" => intermediate_rep .editor .push(models::Editor::from_str(val).map_err(|x| format!("{}", x))?), "token" => intermediate_rep .token .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing AuthOidcResult".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(AuthOidcResult { editor: intermediate_rep .editor .into_iter() .next() .ok_or("editor missing in AuthOidcResult".to_string())?, token: intermediate_rep .token .into_iter() .next() .ok_or("token missing in AuthOidcResult".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for AuthTokenResult - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into AuthTokenResult - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct AuthTokenResult { #[serde(rename = "token")] pub token: String, } impl AuthTokenResult { pub fn new(token: String) -> AuthTokenResult { AuthTokenResult { token: token } } } /// Converts the AuthTokenResult value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for AuthTokenResult { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("token".to_string()); params.push(self.token.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a AuthTokenResult value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for AuthTokenResult { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub token: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing AuthTokenResult".to_string(), ) } }; if let Some(key) = key_result { match key { "token" => intermediate_rep .token .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing AuthTokenResult".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(AuthTokenResult { token: intermediate_rep .token .into_iter() .next() .ok_or("token missing in AuthTokenResult".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ChangelogEntry - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ChangelogEntry - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ChangelogEntry { /// Monotonically increasing sequence number of this changelog entry. #[serde(rename = "index")] pub index: i64, /// Identifier of editgroup accepted/merged in this changelog entry. #[serde(rename = "editgroup_id")] pub editgroup_id: String, /// Date and time when the editgroup was accpeted. #[serde(rename = "timestamp")] pub timestamp: chrono::DateTime, #[serde(rename = "editgroup")] #[serde(skip_serializing_if = "Option::is_none")] pub editgroup: Option, } impl ChangelogEntry { pub fn new( index: i64, editgroup_id: String, timestamp: chrono::DateTime, ) -> ChangelogEntry { ChangelogEntry { index: index, editgroup_id: editgroup_id, timestamp: timestamp, editgroup: None, } } } /// Converts the ChangelogEntry value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ChangelogEntry { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("index".to_string()); params.push(self.index.to_string()); params.push("editgroup_id".to_string()); params.push(self.editgroup_id.to_string()); // Skipping timestamp in query parameter serialization // Skipping editgroup in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ChangelogEntry value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ChangelogEntry { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub index: Vec, pub editgroup_id: Vec, pub timestamp: Vec>, pub editgroup: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ChangelogEntry".to_string(), ) } }; if let Some(key) = key_result { match key { "index" => intermediate_rep .index .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "editgroup_id" => intermediate_rep .editgroup_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "timestamp" => intermediate_rep.timestamp.push( chrono::DateTime::::from_str(val) .map_err(|x| format!("{}", x))?, ), "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing ChangelogEntry".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ChangelogEntry { index: intermediate_rep .index .into_iter() .next() .ok_or("index missing in ChangelogEntry".to_string())?, editgroup_id: intermediate_rep .editgroup_id .into_iter() .next() .ok_or("editgroup_id missing in ChangelogEntry".to_string())?, timestamp: intermediate_rep .timestamp .into_iter() .next() .ok_or("timestamp missing in ChangelogEntry".to_string())?, editgroup: intermediate_rep.editgroup.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ContainerAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ContainerAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ContainerAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl ContainerAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> ContainerAutoBatch { ContainerAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the ContainerAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ContainerAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ContainerAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ContainerAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ContainerAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => return std::result::Result::Err( "Parsing a container in this style is not supported in ContainerAutoBatch" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing ContainerAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ContainerAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in ContainerAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in ContainerAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ContainerEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ContainerEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ContainerEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, /// Name of the container (eg, Journal title). Required for entity creation. #[serde(rename = "name")] #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, /// Type of container, eg 'journal' or 'proceedings'. See Guide for list of valid types. #[serde(rename = "container_type")] #[serde(skip_serializing_if = "Option::is_none")] pub container_type: Option, /// Whether the container is active, discontinued, etc #[serde(rename = "publication_status")] #[serde(skip_serializing_if = "Option::is_none")] pub publication_status: Option, /// Name of the organization or entity responsible for publication. Not the complete imprint/brand. #[serde(rename = "publisher")] #[serde(skip_serializing_if = "Option::is_none")] pub publisher: Option, /// Linking ISSN number (ISSN-L). Should be valid and registered with issn.org #[serde(rename = "issnl")] #[serde(skip_serializing_if = "Option::is_none")] pub issnl: Option, /// Electronic ISSN number (ISSN-E). Should be valid and registered with issn.org #[serde(rename = "issne")] #[serde(skip_serializing_if = "Option::is_none")] pub issne: Option, /// Print ISSN number (ISSN-P). Should be valid and registered with issn.org #[serde(rename = "issnp")] #[serde(skip_serializing_if = "Option::is_none")] pub issnp: Option, #[serde(rename = "wikidata_qid")] #[serde(skip_serializing_if = "Option::is_none")] pub wikidata_qid: Option, } impl ContainerEntity { pub fn new() -> ContainerEntity { ContainerEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, name: None, container_type: None, publication_status: None, publisher: None, issnl: None, issne: None, issnp: None, wikidata_qid: None, } } } /// Converts the ContainerEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ContainerEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization if let Some(ref name) = self.name { params.push("name".to_string()); params.push(name.to_string()); } if let Some(ref container_type) = self.container_type { params.push("container_type".to_string()); params.push(container_type.to_string()); } if let Some(ref publication_status) = self.publication_status { params.push("publication_status".to_string()); params.push(publication_status.to_string()); } if let Some(ref publisher) = self.publisher { params.push("publisher".to_string()); params.push(publisher.to_string()); } if let Some(ref issnl) = self.issnl { params.push("issnl".to_string()); params.push(issnl.to_string()); } if let Some(ref issne) = self.issne { params.push("issne".to_string()); params.push(issne.to_string()); } if let Some(ref issnp) = self.issnp { params.push("issnp".to_string()); params.push(issnp.to_string()); } if let Some(ref wikidata_qid) = self.wikidata_qid { params.push("wikidata_qid".to_string()); params.push(wikidata_qid.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ContainerEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ContainerEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, pub name: Vec, pub container_type: Vec, pub publication_status: Vec, pub publisher: Vec, pub issnl: Vec, pub issne: Vec, pub issnp: Vec, pub wikidata_qid: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ContainerEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ContainerEntity" .to_string(), ) } "edit_extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ContainerEntity" .to_string(), ) } "name" => intermediate_rep .name .push(String::from_str(val).map_err(|x| format!("{}", x))?), "container_type" => intermediate_rep .container_type .push(String::from_str(val).map_err(|x| format!("{}", x))?), "publication_status" => intermediate_rep .publication_status .push(String::from_str(val).map_err(|x| format!("{}", x))?), "publisher" => intermediate_rep .publisher .push(String::from_str(val).map_err(|x| format!("{}", x))?), "issnl" => intermediate_rep .issnl .push(String::from_str(val).map_err(|x| format!("{}", x))?), "issne" => intermediate_rep .issne .push(String::from_str(val).map_err(|x| format!("{}", x))?), "issnp" => intermediate_rep .issnp .push(String::from_str(val).map_err(|x| format!("{}", x))?), "wikidata_qid" => intermediate_rep .wikidata_qid .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing ContainerEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ContainerEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), name: intermediate_rep.name.into_iter().next(), container_type: intermediate_rep.container_type.into_iter().next(), publication_status: intermediate_rep.publication_status.into_iter().next(), publisher: intermediate_rep.publisher.into_iter().next(), issnl: intermediate_rep.issnl.into_iter().next(), issne: intermediate_rep.issne.into_iter().next(), issnp: intermediate_rep.issnp.into_iter().next(), wikidata_qid: intermediate_rep.wikidata_qid.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for CreatorAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into CreatorAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct CreatorAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl CreatorAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> CreatorAutoBatch { CreatorAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the CreatorAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for CreatorAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a CreatorAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for CreatorAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing CreatorAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => return std::result::Result::Err( "Parsing a container in this style is not supported in CreatorAutoBatch" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing CreatorAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(CreatorAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in CreatorAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in CreatorAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for CreatorEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into CreatorEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct CreatorEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, /// Name as should be displayed in web interface or in author lists (not index/sorted). Required for valid entities. #[serde(rename = "display_name")] #[serde(skip_serializing_if = "Option::is_none")] pub display_name: Option, /// In English commonly the first name, but ordering is context and culture specific. #[serde(rename = "given_name")] #[serde(skip_serializing_if = "Option::is_none")] pub given_name: Option, /// In English commonly the last, or family name, but ordering is context and culture specific. #[serde(rename = "surname")] #[serde(skip_serializing_if = "Option::is_none")] pub surname: Option, /// ORCiD (https://orcid.org) identifier #[serde(rename = "orcid")] #[serde(skip_serializing_if = "Option::is_none")] pub orcid: Option, /// Wikidata entity QID #[serde(rename = "wikidata_qid")] #[serde(skip_serializing_if = "Option::is_none")] pub wikidata_qid: Option, } impl CreatorEntity { pub fn new() -> CreatorEntity { CreatorEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, display_name: None, given_name: None, surname: None, orcid: None, wikidata_qid: None, } } } /// Converts the CreatorEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for CreatorEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization if let Some(ref display_name) = self.display_name { params.push("display_name".to_string()); params.push(display_name.to_string()); } if let Some(ref given_name) = self.given_name { params.push("given_name".to_string()); params.push(given_name.to_string()); } if let Some(ref surname) = self.surname { params.push("surname".to_string()); params.push(surname.to_string()); } if let Some(ref orcid) = self.orcid { params.push("orcid".to_string()); params.push(orcid.to_string()); } if let Some(ref wikidata_qid) = self.wikidata_qid { params.push("wikidata_qid".to_string()); params.push(wikidata_qid.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a CreatorEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for CreatorEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, pub display_name: Vec, pub given_name: Vec, pub surname: Vec, pub orcid: Vec, pub wikidata_qid: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing CreatorEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in CreatorEntity" .to_string(), ) } "edit_extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in CreatorEntity" .to_string(), ) } "display_name" => intermediate_rep .display_name .push(String::from_str(val).map_err(|x| format!("{}", x))?), "given_name" => intermediate_rep .given_name .push(String::from_str(val).map_err(|x| format!("{}", x))?), "surname" => intermediate_rep .surname .push(String::from_str(val).map_err(|x| format!("{}", x))?), "orcid" => intermediate_rep .orcid .push(String::from_str(val).map_err(|x| format!("{}", x))?), "wikidata_qid" => intermediate_rep .wikidata_qid .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing CreatorEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(CreatorEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), display_name: intermediate_rep.display_name.into_iter().next(), given_name: intermediate_rep.given_name.into_iter().next(), surname: intermediate_rep.surname.into_iter().next(), orcid: intermediate_rep.orcid.into_iter().next(), wikidata_qid: intermediate_rep.wikidata_qid.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for Editgroup - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into Editgroup - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct Editgroup { /// Fatcat identifier for this editgroup. Assigned on creation. #[serde(rename = "editgroup_id")] #[serde(skip_serializing_if = "Option::is_none")] pub editgroup_id: Option, /// Fatcat identifer of editor that created this editgroup. #[serde(rename = "editor_id")] #[serde(skip_serializing_if = "Option::is_none")] pub editor_id: Option, #[serde(rename = "editor")] #[serde(skip_serializing_if = "Option::is_none")] pub editor: Option, /// For accepted/merged editgroups, the changelog index that the accept occured at. WARNING: not populated in all contexts that an editgroup could be included in a response. #[serde(rename = "changelog_index")] #[serde(skip_serializing_if = "Option::is_none")] pub changelog_index: Option, /// Timestamp when this editgroup was first created. #[serde(rename = "created")] #[serde(skip_serializing_if = "Option::is_none")] pub created: Option>, /// Timestamp when this editgroup was most recently submitted for review. If withdrawn, or never submitted, will be `null`. #[serde(rename = "submitted")] #[serde(skip_serializing_if = "Option::is_none")] pub submitted: Option>, /// Comment describing the changes in this editgroup. Can be updated with PUT request. #[serde(rename = "description")] #[serde(skip_serializing_if = "Option::is_none")] pub description: Option, /// Free-form JSON metadata attached to this editgroup. Eg, metadata provenance, or script user-agent details. See guide for (unenforced) schema norms. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Only included in GET responses, and not in all contexts. Do not include this field in PUT or POST requests. #[serde(rename = "annotations")] #[serde(skip_serializing_if = "Option::is_none")] pub annotations: Option>, #[serde(rename = "edits")] #[serde(skip_serializing_if = "Option::is_none")] pub edits: Option, } impl Editgroup { pub fn new() -> Editgroup { Editgroup { editgroup_id: None, editor_id: None, editor: None, changelog_index: None, created: None, submitted: None, description: None, extra: None, annotations: None, edits: None, } } } /// Converts the Editgroup value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for Editgroup { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref editgroup_id) = self.editgroup_id { params.push("editgroup_id".to_string()); params.push(editgroup_id.to_string()); } if let Some(ref editor_id) = self.editor_id { params.push("editor_id".to_string()); params.push(editor_id.to_string()); } // Skipping editor in query parameter serialization if let Some(ref changelog_index) = self.changelog_index { params.push("changelog_index".to_string()); params.push(changelog_index.to_string()); } // Skipping created in query parameter serialization // Skipping submitted in query parameter serialization if let Some(ref description) = self.description { params.push("description".to_string()); params.push(description.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping annotations in query parameter serialization // Skipping edits in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a Editgroup value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for Editgroup { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup_id: Vec, pub editor_id: Vec, pub editor: Vec, pub changelog_index: Vec, pub created: Vec>, pub submitted: Vec>, pub description: Vec, pub extra: Vec>, pub annotations: Vec>, pub edits: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing Editgroup".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup_id" => intermediate_rep .editgroup_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "editor_id" => intermediate_rep .editor_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "editor" => intermediate_rep .editor .push(models::Editor::from_str(val).map_err(|x| format!("{}", x))?), "changelog_index" => intermediate_rep .changelog_index .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "created" => intermediate_rep.created.push( chrono::DateTime::::from_str(val) .map_err(|x| format!("{}", x))?, ), "submitted" => intermediate_rep.submitted.push( chrono::DateTime::::from_str(val) .map_err(|x| format!("{}", x))?, ), "description" => intermediate_rep .description .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in Editgroup" .to_string(), ) } "annotations" => { return std::result::Result::Err( "Parsing a container in this style is not supported in Editgroup" .to_string(), ) } "edits" => intermediate_rep .edits .push(models::EditgroupEdits::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing Editgroup".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(Editgroup { editgroup_id: intermediate_rep.editgroup_id.into_iter().next(), editor_id: intermediate_rep.editor_id.into_iter().next(), editor: intermediate_rep.editor.into_iter().next(), changelog_index: intermediate_rep.changelog_index.into_iter().next(), created: intermediate_rep.created.into_iter().next(), submitted: intermediate_rep.submitted.into_iter().next(), description: intermediate_rep.description.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), annotations: intermediate_rep.annotations.into_iter().next(), edits: intermediate_rep.edits.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for EditgroupAnnotation - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into EditgroupAnnotation - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct EditgroupAnnotation { /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "annotation_id")] #[serde(skip_serializing_if = "Option::is_none")] pub annotation_id: Option, /// Editgroup that this annotation applies to. Set automatically in creations based on URL parameter. #[serde(rename = "editgroup_id")] #[serde(skip_serializing_if = "Option::is_none")] pub editgroup_id: Option, /// Defaults to editor created the annotation via POST request. #[serde(rename = "editor_id")] #[serde(skip_serializing_if = "Option::is_none")] pub editor_id: Option, #[serde(rename = "editor")] #[serde(skip_serializing_if = "Option::is_none")] pub editor: Option, /// Timestamp when annotation was first created. #[serde(rename = "created")] #[serde(skip_serializing_if = "Option::is_none")] pub created: Option>, #[serde(rename = "comment_markdown")] #[serde(skip_serializing_if = "Option::is_none")] pub comment_markdown: Option, /// Additional free-form JSON metadata that can be included as part of the annotation (or even as the primary annotation itself). See guide for details. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, } impl EditgroupAnnotation { pub fn new() -> EditgroupAnnotation { EditgroupAnnotation { annotation_id: None, editgroup_id: None, editor_id: None, editor: None, created: None, comment_markdown: None, extra: None, } } } /// Converts the EditgroupAnnotation value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for EditgroupAnnotation { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref annotation_id) = self.annotation_id { params.push("annotation_id".to_string()); params.push(annotation_id.to_string()); } if let Some(ref editgroup_id) = self.editgroup_id { params.push("editgroup_id".to_string()); params.push(editgroup_id.to_string()); } if let Some(ref editor_id) = self.editor_id { params.push("editor_id".to_string()); params.push(editor_id.to_string()); } // Skipping editor in query parameter serialization // Skipping created in query parameter serialization if let Some(ref comment_markdown) = self.comment_markdown { params.push("comment_markdown".to_string()); params.push(comment_markdown.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a EditgroupAnnotation value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for EditgroupAnnotation { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub annotation_id: Vec, pub editgroup_id: Vec, pub editor_id: Vec, pub editor: Vec, pub created: Vec>, pub comment_markdown: Vec, pub extra: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing EditgroupAnnotation".to_string(), ) } }; if let Some(key) = key_result { match key { "annotation_id" => intermediate_rep .annotation_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "editgroup_id" => intermediate_rep .editgroup_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "editor_id" => intermediate_rep .editor_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "editor" => intermediate_rep .editor .push(models::Editor::from_str(val).map_err(|x| format!("{}", x))?), "created" => intermediate_rep.created.push( chrono::DateTime::::from_str(val) .map_err(|x| format!("{}", x))?, ), "comment_markdown" => intermediate_rep .comment_markdown .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupAnnotation" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing EditgroupAnnotation".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(EditgroupAnnotation { annotation_id: intermediate_rep.annotation_id.into_iter().next(), editgroup_id: intermediate_rep.editgroup_id.into_iter().next(), editor_id: intermediate_rep.editor_id.into_iter().next(), editor: intermediate_rep.editor.into_iter().next(), created: intermediate_rep.created.into_iter().next(), comment_markdown: intermediate_rep.comment_markdown.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), }) } } /// Only included in GET responses, and not in all contexts. Do not include this field in PUT or POST requests. // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for EditgroupEdits - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into EditgroupEdits - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct EditgroupEdits { #[serde(rename = "containers")] #[serde(skip_serializing_if = "Option::is_none")] pub containers: Option>, #[serde(rename = "creators")] #[serde(skip_serializing_if = "Option::is_none")] pub creators: Option>, #[serde(rename = "files")] #[serde(skip_serializing_if = "Option::is_none")] pub files: Option>, #[serde(rename = "filesets")] #[serde(skip_serializing_if = "Option::is_none")] pub filesets: Option>, #[serde(rename = "webcaptures")] #[serde(skip_serializing_if = "Option::is_none")] pub webcaptures: Option>, #[serde(rename = "releases")] #[serde(skip_serializing_if = "Option::is_none")] pub releases: Option>, #[serde(rename = "works")] #[serde(skip_serializing_if = "Option::is_none")] pub works: Option>, } impl EditgroupEdits { pub fn new() -> EditgroupEdits { EditgroupEdits { containers: None, creators: None, files: None, filesets: None, webcaptures: None, releases: None, works: None, } } } /// Converts the EditgroupEdits value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for EditgroupEdits { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping containers in query parameter serialization // Skipping creators in query parameter serialization // Skipping files in query parameter serialization // Skipping filesets in query parameter serialization // Skipping webcaptures in query parameter serialization // Skipping releases in query parameter serialization // Skipping works in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a EditgroupEdits value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for EditgroupEdits { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub containers: Vec>, pub creators: Vec>, pub files: Vec>, pub filesets: Vec>, pub webcaptures: Vec>, pub releases: Vec>, pub works: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing EditgroupEdits".to_string(), ) } }; if let Some(key) = key_result { match key { "containers" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } "creators" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } "files" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } "filesets" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } "webcaptures" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } "releases" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } "works" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EditgroupEdits" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing EditgroupEdits".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(EditgroupEdits { containers: intermediate_rep.containers.into_iter().next(), creators: intermediate_rep.creators.into_iter().next(), files: intermediate_rep.files.into_iter().next(), filesets: intermediate_rep.filesets.into_iter().next(), webcaptures: intermediate_rep.webcaptures.into_iter().next(), releases: intermediate_rep.releases.into_iter().next(), works: intermediate_rep.works.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for Editor - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into Editor - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct Editor { /// Fatcat identifier for the editor. Can not be changed. #[serde(rename = "editor_id")] #[serde(skip_serializing_if = "Option::is_none")] pub editor_id: Option, /// Username/handle (short slug-like string) to identify this editor. May be changed at any time by the editor; use the `editor_id` as a persistend identifer. #[serde(rename = "username")] pub username: String, /// Whether this editor has the `admin` role. #[serde(rename = "is_admin")] #[serde(skip_serializing_if = "Option::is_none")] pub is_admin: Option, /// Whether this editor is a bot (as opposed to a human making manual edits) #[serde(rename = "is_bot")] #[serde(skip_serializing_if = "Option::is_none")] pub is_bot: Option, /// Whether this editor's account is enabled (if not API tokens and web logins will not work). #[serde(rename = "is_active")] #[serde(skip_serializing_if = "Option::is_none")] pub is_active: Option, } impl Editor { pub fn new(username: String) -> Editor { Editor { editor_id: None, username: username, is_admin: None, is_bot: None, is_active: None, } } } /// Converts the Editor value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for Editor { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref editor_id) = self.editor_id { params.push("editor_id".to_string()); params.push(editor_id.to_string()); } params.push("username".to_string()); params.push(self.username.to_string()); if let Some(ref is_admin) = self.is_admin { params.push("is_admin".to_string()); params.push(is_admin.to_string()); } if let Some(ref is_bot) = self.is_bot { params.push("is_bot".to_string()); params.push(is_bot.to_string()); } if let Some(ref is_active) = self.is_active { params.push("is_active".to_string()); params.push(is_active.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a Editor value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for Editor { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editor_id: Vec, pub username: Vec, pub is_admin: Vec, pub is_bot: Vec, pub is_active: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing Editor".to_string(), ) } }; if let Some(key) = key_result { match key { "editor_id" => intermediate_rep .editor_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "username" => intermediate_rep .username .push(String::from_str(val).map_err(|x| format!("{}", x))?), "is_admin" => intermediate_rep .is_admin .push(bool::from_str(val).map_err(|x| format!("{}", x))?), "is_bot" => intermediate_rep .is_bot .push(bool::from_str(val).map_err(|x| format!("{}", x))?), "is_active" => intermediate_rep .is_active .push(bool::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing Editor".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(Editor { editor_id: intermediate_rep.editor_id.into_iter().next(), username: intermediate_rep .username .into_iter() .next() .ok_or("username missing in Editor".to_string())?, is_admin: intermediate_rep.is_admin.into_iter().next(), is_bot: intermediate_rep.is_bot.into_iter().next(), is_active: intermediate_rep.is_active.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for EntityEdit - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into EntityEdit - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct EntityEdit { /// Unique UUID for this specific edit object. #[serde(rename = "edit_id")] pub edit_id: String, /// Fatcat identifier of the entity this edit is mutating. #[serde(rename = "ident")] pub ident: String, /// Entity revision that this edit will set the entity to. May be `null` in the case of deletions. #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// Revision of entity just before this edit. May be used in the future to prevent edit race conditions. #[serde(rename = "prev_revision")] #[serde(skip_serializing_if = "Option::is_none")] pub prev_revision: Option, /// When an edit is to merge entities (redirect one to another), this is the entity fatcat identifier for the target entity. #[serde(rename = "redirect_ident")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect_ident: Option, /// Editgroup identifier that this edit is part of. #[serde(rename = "editgroup_id")] pub editgroup_id: String, #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, } impl EntityEdit { pub fn new(edit_id: String, ident: String, editgroup_id: String) -> EntityEdit { EntityEdit { edit_id: edit_id, ident: ident, revision: None, prev_revision: None, redirect_ident: None, editgroup_id: editgroup_id, extra: None, } } } /// Converts the EntityEdit value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for EntityEdit { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("edit_id".to_string()); params.push(self.edit_id.to_string()); params.push("ident".to_string()); params.push(self.ident.to_string()); if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref prev_revision) = self.prev_revision { params.push("prev_revision".to_string()); params.push(prev_revision.to_string()); } if let Some(ref redirect_ident) = self.redirect_ident { params.push("redirect_ident".to_string()); params.push(redirect_ident.to_string()); } params.push("editgroup_id".to_string()); params.push(self.editgroup_id.to_string()); // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a EntityEdit value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for EntityEdit { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub edit_id: Vec, pub ident: Vec, pub revision: Vec, pub prev_revision: Vec, pub redirect_ident: Vec, pub editgroup_id: Vec, pub extra: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing EntityEdit".to_string(), ) } }; if let Some(key) = key_result { match key { "edit_id" => intermediate_rep .edit_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "prev_revision" => intermediate_rep .prev_revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect_ident" => intermediate_rep .redirect_ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "editgroup_id" => intermediate_rep .editgroup_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in EntityEdit" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing EntityEdit".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(EntityEdit { edit_id: intermediate_rep .edit_id .into_iter() .next() .ok_or("edit_id missing in EntityEdit".to_string())?, ident: intermediate_rep .ident .into_iter() .next() .ok_or("ident missing in EntityEdit".to_string())?, revision: intermediate_rep.revision.into_iter().next(), prev_revision: intermediate_rep.prev_revision.into_iter().next(), redirect_ident: intermediate_rep.redirect_ident.into_iter().next(), editgroup_id: intermediate_rep .editgroup_id .into_iter() .next() .ok_or("editgroup_id missing in EntityEdit".to_string())?, extra: intermediate_rep.extra.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for EntityHistoryEntry - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into EntityHistoryEntry - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct EntityHistoryEntry { #[serde(rename = "edit")] pub edit: models::EntityEdit, #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "changelog_entry")] pub changelog_entry: models::ChangelogEntry, } impl EntityHistoryEntry { pub fn new( edit: models::EntityEdit, editgroup: models::Editgroup, changelog_entry: models::ChangelogEntry, ) -> EntityHistoryEntry { EntityHistoryEntry { edit: edit, editgroup: editgroup, changelog_entry: changelog_entry, } } } /// Converts the EntityHistoryEntry value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for EntityHistoryEntry { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping edit in query parameter serialization // Skipping editgroup in query parameter serialization // Skipping changelog_entry in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a EntityHistoryEntry value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for EntityHistoryEntry { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub edit: Vec, pub editgroup: Vec, pub changelog_entry: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing EntityHistoryEntry".to_string(), ) } }; if let Some(key) = key_result { match key { "edit" => intermediate_rep .edit .push(models::EntityEdit::from_str(val).map_err(|x| format!("{}", x))?), "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "changelog_entry" => intermediate_rep .changelog_entry .push(models::ChangelogEntry::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing EntityHistoryEntry".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(EntityHistoryEntry { edit: intermediate_rep .edit .into_iter() .next() .ok_or("edit missing in EntityHistoryEntry".to_string())?, editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in EntityHistoryEntry".to_string())?, changelog_entry: intermediate_rep .changelog_entry .into_iter() .next() .ok_or("changelog_entry missing in EntityHistoryEntry".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ErrorResponse - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ErrorResponse - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ErrorResponse { #[serde(rename = "success")] pub success: bool, #[serde(rename = "error")] pub error: String, #[serde(rename = "message")] pub message: String, } impl ErrorResponse { pub fn new(success: bool, error: String, message: String) -> ErrorResponse { ErrorResponse { success: success, error: error, message: message, } } } /// Converts the ErrorResponse value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ErrorResponse { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("success".to_string()); params.push(self.success.to_string()); params.push("error".to_string()); params.push(self.error.to_string()); params.push("message".to_string()); params.push(self.message.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ErrorResponse value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ErrorResponse { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub success: Vec, pub error: Vec, pub message: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ErrorResponse".to_string(), ) } }; if let Some(key) = key_result { match key { "success" => intermediate_rep .success .push(bool::from_str(val).map_err(|x| format!("{}", x))?), "error" => intermediate_rep .error .push(String::from_str(val).map_err(|x| format!("{}", x))?), "message" => intermediate_rep .message .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing ErrorResponse".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ErrorResponse { success: intermediate_rep .success .into_iter() .next() .ok_or("success missing in ErrorResponse".to_string())?, error: intermediate_rep .error .into_iter() .next() .ok_or("error missing in ErrorResponse".to_string())?, message: intermediate_rep .message .into_iter() .next() .ok_or("message missing in ErrorResponse".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FileAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FileAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FileAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl FileAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> FileAutoBatch { FileAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the FileAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FileAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FileAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FileAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FileAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FileAutoBatch" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing FileAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FileAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in FileAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in FileAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FileEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FileEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FileEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, /// Size of file in bytes. Non-zero. #[serde(rename = "size")] #[serde(skip_serializing_if = "Option::is_none")] pub size: Option, /// MD5 hash of data, in hex encoding #[serde(rename = "md5")] #[serde(skip_serializing_if = "Option::is_none")] pub md5: Option, /// SHA-1 hash of data, in hex encoding #[serde(rename = "sha1")] #[serde(skip_serializing_if = "Option::is_none")] pub sha1: Option, /// SHA-256 hash of data, in hex encoding #[serde(rename = "sha256")] #[serde(skip_serializing_if = "Option::is_none")] pub sha256: Option, #[serde(rename = "urls")] #[serde(skip_serializing_if = "Option::is_none")] pub urls: Option>, #[serde(rename = "mimetype")] #[serde(skip_serializing_if = "Option::is_none")] pub mimetype: Option, /// Set of identifier of release entities this file represents a full manifestation of. Usually a single release, but some files contain content of multiple full releases (eg, an issue of a journal). #[serde(rename = "release_ids")] #[serde(skip_serializing_if = "Option::is_none")] pub release_ids: Option>, /// Full release entities, included in GET responses when `releases` included in `expand` parameter. Ignored if included in PUT or POST requests. #[serde(rename = "releases")] #[serde(skip_serializing_if = "Option::is_none")] pub releases: Option>, } impl FileEntity { pub fn new() -> FileEntity { FileEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, size: None, md5: None, sha1: None, sha256: None, urls: None, mimetype: None, release_ids: None, releases: None, } } } /// Converts the FileEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FileEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization if let Some(ref size) = self.size { params.push("size".to_string()); params.push(size.to_string()); } if let Some(ref md5) = self.md5 { params.push("md5".to_string()); params.push(md5.to_string()); } if let Some(ref sha1) = self.sha1 { params.push("sha1".to_string()); params.push(sha1.to_string()); } if let Some(ref sha256) = self.sha256 { params.push("sha256".to_string()); params.push(sha256.to_string()); } // Skipping urls in query parameter serialization if let Some(ref mimetype) = self.mimetype { params.push("mimetype".to_string()); params.push(mimetype.to_string()); } if let Some(ref release_ids) = self.release_ids { params.push("release_ids".to_string()); params.push( release_ids .iter() .map(|x| x.to_string()) .collect::>() .join(",") .to_string(), ); } // Skipping releases in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FileEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FileEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, pub size: Vec, pub md5: Vec, pub sha1: Vec, pub sha256: Vec, pub urls: Vec>, pub mimetype: Vec, pub release_ids: Vec>, pub releases: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FileEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FileEntity" .to_string(), ) } "edit_extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FileEntity" .to_string(), ) } "size" => intermediate_rep .size .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "md5" => intermediate_rep .md5 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "sha1" => intermediate_rep .sha1 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "sha256" => intermediate_rep .sha256 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "urls" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FileEntity" .to_string(), ) } "mimetype" => intermediate_rep .mimetype .push(String::from_str(val).map_err(|x| format!("{}", x))?), "release_ids" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FileEntity" .to_string(), ) } "releases" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FileEntity" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing FileEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FileEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), size: intermediate_rep.size.into_iter().next(), md5: intermediate_rep.md5.into_iter().next(), sha1: intermediate_rep.sha1.into_iter().next(), sha256: intermediate_rep.sha256.into_iter().next(), urls: intermediate_rep.urls.into_iter().next(), mimetype: intermediate_rep.mimetype.into_iter().next(), release_ids: intermediate_rep.release_ids.into_iter().next(), releases: intermediate_rep.releases.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FileUrl - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FileUrl - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FileUrl { /// URL/URI pointing directly to a machine retrievable copy of this exact file. #[serde(rename = "url")] pub url: String, /// Indicates type of host this URL points to. Eg, \"publisher\", \"repository\", \"webarchive\". See guide for list of acceptable values. #[serde(rename = "rel")] pub rel: String, } impl FileUrl { pub fn new(url: String, rel: String) -> FileUrl { FileUrl { url: url, rel: rel } } } /// Converts the FileUrl value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FileUrl { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("url".to_string()); params.push(self.url.to_string()); params.push("rel".to_string()); params.push(self.rel.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FileUrl value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FileUrl { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub url: Vec, pub rel: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FileUrl".to_string(), ) } }; if let Some(key) = key_result { match key { "url" => intermediate_rep .url .push(String::from_str(val).map_err(|x| format!("{}", x))?), "rel" => intermediate_rep .rel .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing FileUrl".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FileUrl { url: intermediate_rep .url .into_iter() .next() .ok_or("url missing in FileUrl".to_string())?, rel: intermediate_rep .rel .into_iter() .next() .ok_or("rel missing in FileUrl".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FilesetAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FilesetAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FilesetAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl FilesetAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> FilesetAutoBatch { FilesetAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the FilesetAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FilesetAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FilesetAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FilesetAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FilesetAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetAutoBatch" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing FilesetAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FilesetAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in FilesetAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in FilesetAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FilesetEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FilesetEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FilesetEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, #[serde(rename = "manifest")] #[serde(skip_serializing_if = "Option::is_none")] pub manifest: Option>, #[serde(rename = "urls")] #[serde(skip_serializing_if = "Option::is_none")] pub urls: Option>, /// Set of identifier of release entities this fileset represents a full manifestation of. Usually a single release. #[serde(rename = "release_ids")] #[serde(skip_serializing_if = "Option::is_none")] pub release_ids: Option>, /// Full release entities, included in GET responses when `releases` included in `expand` parameter. Ignored if included in PUT or POST requests. #[serde(rename = "releases")] #[serde(skip_serializing_if = "Option::is_none")] pub releases: Option>, } impl FilesetEntity { pub fn new() -> FilesetEntity { FilesetEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, manifest: None, urls: None, release_ids: None, releases: None, } } } /// Converts the FilesetEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FilesetEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping manifest in query parameter serialization // Skipping urls in query parameter serialization if let Some(ref release_ids) = self.release_ids { params.push("release_ids".to_string()); params.push( release_ids .iter() .map(|x| x.to_string()) .collect::>() .join(",") .to_string(), ); } // Skipping releases in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FilesetEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FilesetEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, pub manifest: Vec>, pub urls: Vec>, pub release_ids: Vec>, pub releases: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FilesetEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetEntity" .to_string(), ) } "edit_extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetEntity" .to_string(), ) } "manifest" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetEntity" .to_string(), ) } "urls" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetEntity" .to_string(), ) } "release_ids" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetEntity" .to_string(), ) } "releases" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetEntity" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing FilesetEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FilesetEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), manifest: intermediate_rep.manifest.into_iter().next(), urls: intermediate_rep.urls.into_iter().next(), release_ids: intermediate_rep.release_ids.into_iter().next(), releases: intermediate_rep.releases.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FilesetFile - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FilesetFile - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FilesetFile { /// Path name of file within this fileset (eg, directory) #[serde(rename = "path")] pub path: String, /// File size in bytes #[serde(rename = "size")] pub size: i64, /// MD5 hash of data, in hex encoding #[serde(rename = "md5")] #[serde(skip_serializing_if = "Option::is_none")] pub md5: Option, /// SHA-1 hash of data, in hex encoding #[serde(rename = "sha1")] #[serde(skip_serializing_if = "Option::is_none")] pub sha1: Option, /// SHA-256 hash of data, in hex encoding #[serde(rename = "sha256")] #[serde(skip_serializing_if = "Option::is_none")] pub sha256: Option, #[serde(rename = "mimetype")] #[serde(skip_serializing_if = "Option::is_none")] pub mimetype: Option, /// Free-form additional metadata about this specific file in the set. Eg, `original_url`. See guide for normative (but unenforced) schema fields. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, } impl FilesetFile { pub fn new(path: String, size: i64) -> FilesetFile { FilesetFile { path: path, size: size, md5: None, sha1: None, sha256: None, mimetype: None, extra: None, } } } /// Converts the FilesetFile value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FilesetFile { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("path".to_string()); params.push(self.path.to_string()); params.push("size".to_string()); params.push(self.size.to_string()); if let Some(ref md5) = self.md5 { params.push("md5".to_string()); params.push(md5.to_string()); } if let Some(ref sha1) = self.sha1 { params.push("sha1".to_string()); params.push(sha1.to_string()); } if let Some(ref sha256) = self.sha256 { params.push("sha256".to_string()); params.push(sha256.to_string()); } if let Some(ref mimetype) = self.mimetype { params.push("mimetype".to_string()); params.push(mimetype.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FilesetFile value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FilesetFile { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub path: Vec, pub size: Vec, pub md5: Vec, pub sha1: Vec, pub sha256: Vec, pub mimetype: Vec, pub extra: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FilesetFile".to_string(), ) } }; if let Some(key) = key_result { match key { "path" => intermediate_rep .path .push(String::from_str(val).map_err(|x| format!("{}", x))?), "size" => intermediate_rep .size .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "md5" => intermediate_rep .md5 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "sha1" => intermediate_rep .sha1 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "sha256" => intermediate_rep .sha256 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "mimetype" => intermediate_rep .mimetype .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in FilesetFile" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing FilesetFile".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FilesetFile { path: intermediate_rep .path .into_iter() .next() .ok_or("path missing in FilesetFile".to_string())?, size: intermediate_rep .size .into_iter() .next() .ok_or("size missing in FilesetFile".to_string())?, md5: intermediate_rep.md5.into_iter().next(), sha1: intermediate_rep.sha1.into_iter().next(), sha256: intermediate_rep.sha256.into_iter().next(), mimetype: intermediate_rep.mimetype.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for FilesetUrl - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into FilesetUrl - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct FilesetUrl { #[serde(rename = "url")] pub url: String, /// Indicates type of host this URL points to. See guide for list of acceptable values. #[serde(rename = "rel")] pub rel: String, } impl FilesetUrl { pub fn new(url: String, rel: String) -> FilesetUrl { FilesetUrl { url: url, rel: rel } } } /// Converts the FilesetUrl value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for FilesetUrl { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("url".to_string()); params.push(self.url.to_string()); params.push("rel".to_string()); params.push(self.rel.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a FilesetUrl value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for FilesetUrl { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub url: Vec, pub rel: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing FilesetUrl".to_string(), ) } }; if let Some(key) = key_result { match key { "url" => intermediate_rep .url .push(String::from_str(val).map_err(|x| format!("{}", x))?), "rel" => intermediate_rep .rel .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing FilesetUrl".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(FilesetUrl { url: intermediate_rep .url .into_iter() .next() .ok_or("url missing in FilesetUrl".to_string())?, rel: intermediate_rep .rel .into_iter() .next() .ok_or("rel missing in FilesetUrl".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ReleaseAbstract - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ReleaseAbstract - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ReleaseAbstract { /// SHA-1 hash of data, in hex encoding #[serde(rename = "sha1")] #[serde(skip_serializing_if = "Option::is_none")] pub sha1: Option, /// Abstract content. May be encoded, as per `mimetype` field, but only string/text content may be included. #[serde(rename = "content")] #[serde(skip_serializing_if = "Option::is_none")] pub content: Option, /// Mimetype of abstract contents. `text/plain` is the default if content isn't encoded. #[serde(rename = "mimetype")] #[serde(skip_serializing_if = "Option::is_none")] pub mimetype: Option, /// ISO language code of the abstract. Same semantics as release `language` field. #[serde(rename = "lang")] #[serde(skip_serializing_if = "Option::is_none")] pub lang: Option, } impl ReleaseAbstract { pub fn new() -> ReleaseAbstract { ReleaseAbstract { sha1: None, content: None, mimetype: None, lang: None, } } } /// Converts the ReleaseAbstract value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ReleaseAbstract { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref sha1) = self.sha1 { params.push("sha1".to_string()); params.push(sha1.to_string()); } if let Some(ref content) = self.content { params.push("content".to_string()); params.push(content.to_string()); } if let Some(ref mimetype) = self.mimetype { params.push("mimetype".to_string()); params.push(mimetype.to_string()); } if let Some(ref lang) = self.lang { params.push("lang".to_string()); params.push(lang.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ReleaseAbstract value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ReleaseAbstract { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub sha1: Vec, pub content: Vec, pub mimetype: Vec, pub lang: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ReleaseAbstract".to_string(), ) } }; if let Some(key) = key_result { match key { "sha1" => intermediate_rep .sha1 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "content" => intermediate_rep .content .push(String::from_str(val).map_err(|x| format!("{}", x))?), "mimetype" => intermediate_rep .mimetype .push(String::from_str(val).map_err(|x| format!("{}", x))?), "lang" => intermediate_rep .lang .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing ReleaseAbstract".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ReleaseAbstract { sha1: intermediate_rep.sha1.into_iter().next(), content: intermediate_rep.content.into_iter().next(), mimetype: intermediate_rep.mimetype.into_iter().next(), lang: intermediate_rep.lang.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ReleaseAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ReleaseAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ReleaseAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl ReleaseAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> ReleaseAutoBatch { ReleaseAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the ReleaseAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ReleaseAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ReleaseAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ReleaseAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ReleaseAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseAutoBatch" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing ReleaseAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ReleaseAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in ReleaseAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in ReleaseAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ReleaseContrib - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ReleaseContrib - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ReleaseContrib { /// Internally assigned zero-indexed sequence number of contribution. Authors should come first; this encodes the order of attriubtion. #[serde(rename = "index")] #[serde(skip_serializing_if = "Option::is_none")] pub index: Option, /// If known, indicates the creator entity this contribution was made by. #[serde(rename = "creator_id")] #[serde(skip_serializing_if = "Option::is_none")] pub creator_id: Option, #[serde(rename = "creator")] #[serde(skip_serializing_if = "Option::is_none")] pub creator: Option, /// Full name of the contributor as typeset in the release. #[serde(rename = "raw_name")] #[serde(skip_serializing_if = "Option::is_none")] pub raw_name: Option, /// In English commonly the first name, but ordering is context and culture specific. #[serde(rename = "given_name")] #[serde(skip_serializing_if = "Option::is_none")] pub given_name: Option, /// In English commonly the last, or family name, but ordering is context and culture specific. #[serde(rename = "surname")] #[serde(skip_serializing_if = "Option::is_none")] pub surname: Option, /// Short string (slug) indicating type of contribution (eg, \"author\", \"translator\"). See guide for list of accpeted values. #[serde(rename = "role")] #[serde(skip_serializing_if = "Option::is_none")] pub role: Option, /// Raw affiliation string as displayed in text #[serde(rename = "raw_affiliation")] #[serde(skip_serializing_if = "Option::is_none")] pub raw_affiliation: Option, /// Additional free-form JSON metadata about this contributor/contribution. See guide for normative schema. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, } impl ReleaseContrib { pub fn new() -> ReleaseContrib { ReleaseContrib { index: None, creator_id: None, creator: None, raw_name: None, given_name: None, surname: None, role: None, raw_affiliation: None, extra: None, } } } /// Converts the ReleaseContrib value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ReleaseContrib { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref index) = self.index { params.push("index".to_string()); params.push(index.to_string()); } if let Some(ref creator_id) = self.creator_id { params.push("creator_id".to_string()); params.push(creator_id.to_string()); } // Skipping creator in query parameter serialization if let Some(ref raw_name) = self.raw_name { params.push("raw_name".to_string()); params.push(raw_name.to_string()); } if let Some(ref given_name) = self.given_name { params.push("given_name".to_string()); params.push(given_name.to_string()); } if let Some(ref surname) = self.surname { params.push("surname".to_string()); params.push(surname.to_string()); } if let Some(ref role) = self.role { params.push("role".to_string()); params.push(role.to_string()); } if let Some(ref raw_affiliation) = self.raw_affiliation { params.push("raw_affiliation".to_string()); params.push(raw_affiliation.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ReleaseContrib value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ReleaseContrib { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub index: Vec, pub creator_id: Vec, pub creator: Vec, pub raw_name: Vec, pub given_name: Vec, pub surname: Vec, pub role: Vec, pub raw_affiliation: Vec, pub extra: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ReleaseContrib".to_string(), ) } }; if let Some(key) = key_result { match key { "index" => intermediate_rep .index .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "creator_id" => intermediate_rep .creator_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "creator" => intermediate_rep .creator .push(models::CreatorEntity::from_str(val).map_err(|x| format!("{}", x))?), "raw_name" => intermediate_rep .raw_name .push(String::from_str(val).map_err(|x| format!("{}", x))?), "given_name" => intermediate_rep .given_name .push(String::from_str(val).map_err(|x| format!("{}", x))?), "surname" => intermediate_rep .surname .push(String::from_str(val).map_err(|x| format!("{}", x))?), "role" => intermediate_rep .role .push(String::from_str(val).map_err(|x| format!("{}", x))?), "raw_affiliation" => intermediate_rep .raw_affiliation .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseContrib" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing ReleaseContrib".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ReleaseContrib { index: intermediate_rep.index.into_iter().next(), creator_id: intermediate_rep.creator_id.into_iter().next(), creator: intermediate_rep.creator.into_iter().next(), raw_name: intermediate_rep.raw_name.into_iter().next(), given_name: intermediate_rep.given_name.into_iter().next(), surname: intermediate_rep.surname.into_iter().next(), role: intermediate_rep.role.into_iter().next(), raw_affiliation: intermediate_rep.raw_affiliation.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ReleaseEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ReleaseEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ReleaseEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, /// Required for valid entities. The title used in citations and for display. Sometimes the English translation of title e even if release content is not English. #[serde(rename = "title")] #[serde(skip_serializing_if = "Option::is_none")] pub title: Option, /// Subtitle of release. In many cases, better to merge with title than include as separate field (unless combined title would be very long). See guide for details. #[serde(rename = "subtitle")] #[serde(skip_serializing_if = "Option::is_none")] pub subtitle: Option, /// Title in original language if `title` field has been translated. See guide for details. #[serde(rename = "original_title")] #[serde(skip_serializing_if = "Option::is_none")] pub original_title: Option, /// Identifier of work this release is part of. In creation (POST) requests, a work entity will be created automatically if this field is not set. #[serde(rename = "work_id")] #[serde(skip_serializing_if = "Option::is_none")] pub work_id: Option, #[serde(rename = "container")] #[serde(skip_serializing_if = "Option::is_none")] pub container: Option, /// Complete file entities identified by `file_ids` field. Only included in GET responses when `files` included in `expand` parameter; ignored in PUT or POST requests. #[serde(rename = "files")] #[serde(skip_serializing_if = "Option::is_none")] pub files: Option>, /// Complete file entities identified by `filesets_ids` field. Only included in GET responses when `filesets` included in `expand` parameter; ignored in PUT or POST requests. #[serde(rename = "filesets")] #[serde(skip_serializing_if = "Option::is_none")] pub filesets: Option>, /// Complete webcapture entities identified by `webcapture_ids` field. Only included in GET responses when `webcaptures` included in `expand` parameter; ignored in PUT or POST requests. #[serde(rename = "webcaptures")] #[serde(skip_serializing_if = "Option::is_none")] pub webcaptures: Option>, /// Used to link this release to a container entity that the release was published as part of. #[serde(rename = "container_id")] #[serde(skip_serializing_if = "Option::is_none")] pub container_id: Option, /// \"Type\" or \"medium\" that this release is published as. See guide for valid values. #[serde(rename = "release_type")] #[serde(skip_serializing_if = "Option::is_none")] pub release_type: Option, /// The stage of publication of this specific release. See guide for valid values and semantics. #[serde(rename = "release_stage")] #[serde(skip_serializing_if = "Option::is_none")] pub release_stage: Option, /// Full date when this release was formally published. ISO format, like `2019-03-05`. See guide for semantics. #[serde(rename = "release_date")] #[serde(skip_serializing_if = "Option::is_none")] pub release_date: Option, /// Year when this release was formally published. Must match `release_date` if that field is set; this field exists because sometimes only the year is known. #[serde(rename = "release_year")] #[serde(skip_serializing_if = "Option::is_none")] pub release_year: Option, /// Type of withdrawl or retraction of this release, if applicable. If release has not been withdrawn, should be `null` (aka, not set, not the string \"null\" or an empty string). #[serde(rename = "withdrawn_status")] #[serde(skip_serializing_if = "Option::is_none")] pub withdrawn_status: Option, /// Full date when this release was formally withdrawn (if applicable). ISO format, like `release_date`. #[serde(rename = "withdrawn_date")] #[serde(skip_serializing_if = "Option::is_none")] pub withdrawn_date: Option, /// Year corresponding with `withdrawn_date` like `release_year`/`release_date`. #[serde(rename = "withdrawn_year")] #[serde(skip_serializing_if = "Option::is_none")] pub withdrawn_year: Option, #[serde(rename = "ext_ids")] pub ext_ids: models::ReleaseExtIds, /// Volume number of container that this release was published in. Often corresponds to the \"Nth\" year of publication, but can be any string. See guide. #[serde(rename = "volume")] #[serde(skip_serializing_if = "Option::is_none")] pub volume: Option, /// Issue number of volume/container that this release was published in. Sometimes coresponds to a month number in the year, but can be any string. See guide. #[serde(rename = "issue")] #[serde(skip_serializing_if = "Option::is_none")] pub issue: Option, /// Either a single page number (\"first page\") or a range of pages separated by a dash (\"-\"). See guide for details. #[serde(rename = "pages")] #[serde(skip_serializing_if = "Option::is_none")] pub pages: Option, /// For, eg, technical reports, which are published in series or assigned some other institutional or container-specific identifier. #[serde(rename = "number")] #[serde(skip_serializing_if = "Option::is_none")] pub number: Option, /// For, eg, updated technical reports or software packages, where the version string may be the only field disambiguating between releases. #[serde(rename = "version")] #[serde(skip_serializing_if = "Option::is_none")] pub version: Option, /// Name, usually English, of the entity or institution responsible for publication of this release. Not necessarily the imprint/brand. See guide. #[serde(rename = "publisher")] #[serde(skip_serializing_if = "Option::is_none")] pub publisher: Option, /// Primary language of the content of the full release. Two-letter RFC1766/ISO639-1 language code, with some custom extensions/additions. See guide. #[serde(rename = "language")] #[serde(skip_serializing_if = "Option::is_none")] pub language: Option, /// Short string (slug) name of license under which release is openly published (if applicable). #[serde(rename = "license_slug")] #[serde(skip_serializing_if = "Option::is_none")] pub license_slug: Option, #[serde(rename = "contribs")] #[serde(skip_serializing_if = "Option::is_none")] pub contribs: Option>, #[serde(rename = "refs")] #[serde(skip_serializing_if = "Option::is_none")] pub refs: Option>, #[serde(rename = "abstracts")] #[serde(skip_serializing_if = "Option::is_none")] pub abstracts: Option>, } impl ReleaseEntity { pub fn new(ext_ids: models::ReleaseExtIds) -> ReleaseEntity { ReleaseEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, title: None, subtitle: None, original_title: None, work_id: None, container: None, files: None, filesets: None, webcaptures: None, container_id: None, release_type: None, release_stage: None, release_date: None, release_year: None, withdrawn_status: None, withdrawn_date: None, withdrawn_year: None, ext_ids: ext_ids, volume: None, issue: None, pages: None, number: None, version: None, publisher: None, language: None, license_slug: None, contribs: None, refs: None, abstracts: None, } } } /// Converts the ReleaseEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ReleaseEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization if let Some(ref title) = self.title { params.push("title".to_string()); params.push(title.to_string()); } if let Some(ref subtitle) = self.subtitle { params.push("subtitle".to_string()); params.push(subtitle.to_string()); } if let Some(ref original_title) = self.original_title { params.push("original_title".to_string()); params.push(original_title.to_string()); } if let Some(ref work_id) = self.work_id { params.push("work_id".to_string()); params.push(work_id.to_string()); } // Skipping container in query parameter serialization // Skipping files in query parameter serialization // Skipping filesets in query parameter serialization // Skipping webcaptures in query parameter serialization if let Some(ref container_id) = self.container_id { params.push("container_id".to_string()); params.push(container_id.to_string()); } if let Some(ref release_type) = self.release_type { params.push("release_type".to_string()); params.push(release_type.to_string()); } if let Some(ref release_stage) = self.release_stage { params.push("release_stage".to_string()); params.push(release_stage.to_string()); } // Skipping release_date in query parameter serialization if let Some(ref release_year) = self.release_year { params.push("release_year".to_string()); params.push(release_year.to_string()); } if let Some(ref withdrawn_status) = self.withdrawn_status { params.push("withdrawn_status".to_string()); params.push(withdrawn_status.to_string()); } // Skipping withdrawn_date in query parameter serialization if let Some(ref withdrawn_year) = self.withdrawn_year { params.push("withdrawn_year".to_string()); params.push(withdrawn_year.to_string()); } // Skipping ext_ids in query parameter serialization if let Some(ref volume) = self.volume { params.push("volume".to_string()); params.push(volume.to_string()); } if let Some(ref issue) = self.issue { params.push("issue".to_string()); params.push(issue.to_string()); } if let Some(ref pages) = self.pages { params.push("pages".to_string()); params.push(pages.to_string()); } if let Some(ref number) = self.number { params.push("number".to_string()); params.push(number.to_string()); } if let Some(ref version) = self.version { params.push("version".to_string()); params.push(version.to_string()); } if let Some(ref publisher) = self.publisher { params.push("publisher".to_string()); params.push(publisher.to_string()); } if let Some(ref language) = self.language { params.push("language".to_string()); params.push(language.to_string()); } if let Some(ref license_slug) = self.license_slug { params.push("license_slug".to_string()); params.push(license_slug.to_string()); } // Skipping contribs in query parameter serialization // Skipping refs in query parameter serialization // Skipping abstracts in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ReleaseEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ReleaseEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, pub title: Vec, pub subtitle: Vec, pub original_title: Vec, pub work_id: Vec, pub container: Vec, pub files: Vec>, pub filesets: Vec>, pub webcaptures: Vec>, pub container_id: Vec, pub release_type: Vec, pub release_stage: Vec, pub release_date: Vec, pub release_year: Vec, pub withdrawn_status: Vec, pub withdrawn_date: Vec, pub withdrawn_year: Vec, pub ext_ids: Vec, pub volume: Vec, pub issue: Vec, pub pages: Vec, pub number: Vec, pub version: Vec, pub publisher: Vec, pub language: Vec, pub license_slug: Vec, pub contribs: Vec>, pub refs: Vec>, pub abstracts: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ReleaseEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "edit_extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "title" => intermediate_rep .title .push(String::from_str(val).map_err(|x| format!("{}", x))?), "subtitle" => intermediate_rep .subtitle .push(String::from_str(val).map_err(|x| format!("{}", x))?), "original_title" => intermediate_rep .original_title .push(String::from_str(val).map_err(|x| format!("{}", x))?), "work_id" => intermediate_rep .work_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "container" => intermediate_rep.container.push( models::ContainerEntity::from_str(val).map_err(|x| format!("{}", x))?, ), "files" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "filesets" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "webcaptures" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "container_id" => intermediate_rep .container_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "release_type" => intermediate_rep .release_type .push(String::from_str(val).map_err(|x| format!("{}", x))?), "release_stage" => intermediate_rep .release_stage .push(String::from_str(val).map_err(|x| format!("{}", x))?), "release_date" => intermediate_rep .release_date .push(chrono::NaiveDate::from_str(val).map_err(|x| format!("{}", x))?), "release_year" => intermediate_rep .release_year .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "withdrawn_status" => intermediate_rep .withdrawn_status .push(String::from_str(val).map_err(|x| format!("{}", x))?), "withdrawn_date" => intermediate_rep .withdrawn_date .push(chrono::NaiveDate::from_str(val).map_err(|x| format!("{}", x))?), "withdrawn_year" => intermediate_rep .withdrawn_year .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "ext_ids" => intermediate_rep .ext_ids .push(models::ReleaseExtIds::from_str(val).map_err(|x| format!("{}", x))?), "volume" => intermediate_rep .volume .push(String::from_str(val).map_err(|x| format!("{}", x))?), "issue" => intermediate_rep .issue .push(String::from_str(val).map_err(|x| format!("{}", x))?), "pages" => intermediate_rep .pages .push(String::from_str(val).map_err(|x| format!("{}", x))?), "number" => intermediate_rep .number .push(String::from_str(val).map_err(|x| format!("{}", x))?), "version" => intermediate_rep .version .push(String::from_str(val).map_err(|x| format!("{}", x))?), "publisher" => intermediate_rep .publisher .push(String::from_str(val).map_err(|x| format!("{}", x))?), "language" => intermediate_rep .language .push(String::from_str(val).map_err(|x| format!("{}", x))?), "license_slug" => intermediate_rep .license_slug .push(String::from_str(val).map_err(|x| format!("{}", x))?), "contribs" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "refs" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } "abstracts" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseEntity" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing ReleaseEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ReleaseEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), title: intermediate_rep.title.into_iter().next(), subtitle: intermediate_rep.subtitle.into_iter().next(), original_title: intermediate_rep.original_title.into_iter().next(), work_id: intermediate_rep.work_id.into_iter().next(), container: intermediate_rep.container.into_iter().next(), files: intermediate_rep.files.into_iter().next(), filesets: intermediate_rep.filesets.into_iter().next(), webcaptures: intermediate_rep.webcaptures.into_iter().next(), container_id: intermediate_rep.container_id.into_iter().next(), release_type: intermediate_rep.release_type.into_iter().next(), release_stage: intermediate_rep.release_stage.into_iter().next(), release_date: intermediate_rep.release_date.into_iter().next(), release_year: intermediate_rep.release_year.into_iter().next(), withdrawn_status: intermediate_rep.withdrawn_status.into_iter().next(), withdrawn_date: intermediate_rep.withdrawn_date.into_iter().next(), withdrawn_year: intermediate_rep.withdrawn_year.into_iter().next(), ext_ids: intermediate_rep .ext_ids .into_iter() .next() .ok_or("ext_ids missing in ReleaseEntity".to_string())?, volume: intermediate_rep.volume.into_iter().next(), issue: intermediate_rep.issue.into_iter().next(), pages: intermediate_rep.pages.into_iter().next(), number: intermediate_rep.number.into_iter().next(), version: intermediate_rep.version.into_iter().next(), publisher: intermediate_rep.publisher.into_iter().next(), language: intermediate_rep.language.into_iter().next(), license_slug: intermediate_rep.license_slug.into_iter().next(), contribs: intermediate_rep.contribs.into_iter().next(), refs: intermediate_rep.refs.into_iter().next(), abstracts: intermediate_rep.abstracts.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ReleaseExtIds - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ReleaseExtIds - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ReleaseExtIds { /// Digital Object Identifier (DOI), mostly for published papers and datasets. Should be registered and resolvable via https://doi.org/ #[serde(rename = "doi")] #[serde(skip_serializing_if = "Option::is_none")] pub doi: Option, /// Wikidata entity QID #[serde(rename = "wikidata_qid")] #[serde(skip_serializing_if = "Option::is_none")] pub wikidata_qid: Option, /// ISBN-13, for books. Usually not set for chapters. ISBN-10 should be converted to ISBN-13. #[serde(rename = "isbn13")] #[serde(skip_serializing_if = "Option::is_none")] pub isbn13: Option, /// PubMed Identifier #[serde(rename = "pmid")] #[serde(skip_serializing_if = "Option::is_none")] pub pmid: Option, /// PubMed Central Identifier #[serde(rename = "pmcid")] #[serde(skip_serializing_if = "Option::is_none")] pub pmcid: Option, /// CORE (https://core.ac.uk) identifier #[serde(rename = "core")] #[serde(skip_serializing_if = "Option::is_none")] pub core: Option, /// arXiv (https://arxiv.org) identifier; must include version #[serde(rename = "arxiv")] #[serde(skip_serializing_if = "Option::is_none")] pub arxiv: Option, /// JSTOR work identifier #[serde(rename = "jstor")] #[serde(skip_serializing_if = "Option::is_none")] pub jstor: Option, /// ARK identifier #[serde(rename = "ark")] #[serde(skip_serializing_if = "Option::is_none")] pub ark: Option, /// Microsoft Academic Graph identifier #[serde(rename = "mag")] #[serde(skip_serializing_if = "Option::is_none")] pub mag: Option, /// DOAJ article-level identifier #[serde(rename = "doaj")] #[serde(skip_serializing_if = "Option::is_none")] pub doaj: Option, /// dblp (https://dblp.uni-trier.de/) paper identifier; eg for conference proceedings #[serde(rename = "dblp")] #[serde(skip_serializing_if = "Option::is_none")] pub dblp: Option, /// OAI-PMH identifier; only used when an OAI-PMH record is the only authoritative metadata (eg, journal OAI-PMH feeds w/o DOIs) #[serde(rename = "oai")] #[serde(skip_serializing_if = "Option::is_none")] pub oai: Option, /// Handle identifier. Do not put DOIs in this field #[serde(rename = "hdl")] #[serde(skip_serializing_if = "Option::is_none")] pub hdl: Option, } impl ReleaseExtIds { pub fn new() -> ReleaseExtIds { ReleaseExtIds { doi: None, wikidata_qid: None, isbn13: None, pmid: None, pmcid: None, core: None, arxiv: None, jstor: None, ark: None, mag: None, doaj: None, dblp: None, oai: None, hdl: None, } } } /// Converts the ReleaseExtIds value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ReleaseExtIds { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref doi) = self.doi { params.push("doi".to_string()); params.push(doi.to_string()); } if let Some(ref wikidata_qid) = self.wikidata_qid { params.push("wikidata_qid".to_string()); params.push(wikidata_qid.to_string()); } if let Some(ref isbn13) = self.isbn13 { params.push("isbn13".to_string()); params.push(isbn13.to_string()); } if let Some(ref pmid) = self.pmid { params.push("pmid".to_string()); params.push(pmid.to_string()); } if let Some(ref pmcid) = self.pmcid { params.push("pmcid".to_string()); params.push(pmcid.to_string()); } if let Some(ref core) = self.core { params.push("core".to_string()); params.push(core.to_string()); } if let Some(ref arxiv) = self.arxiv { params.push("arxiv".to_string()); params.push(arxiv.to_string()); } if let Some(ref jstor) = self.jstor { params.push("jstor".to_string()); params.push(jstor.to_string()); } if let Some(ref ark) = self.ark { params.push("ark".to_string()); params.push(ark.to_string()); } if let Some(ref mag) = self.mag { params.push("mag".to_string()); params.push(mag.to_string()); } if let Some(ref doaj) = self.doaj { params.push("doaj".to_string()); params.push(doaj.to_string()); } if let Some(ref dblp) = self.dblp { params.push("dblp".to_string()); params.push(dblp.to_string()); } if let Some(ref oai) = self.oai { params.push("oai".to_string()); params.push(oai.to_string()); } if let Some(ref hdl) = self.hdl { params.push("hdl".to_string()); params.push(hdl.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ReleaseExtIds value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ReleaseExtIds { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub doi: Vec, pub wikidata_qid: Vec, pub isbn13: Vec, pub pmid: Vec, pub pmcid: Vec, pub core: Vec, pub arxiv: Vec, pub jstor: Vec, pub ark: Vec, pub mag: Vec, pub doaj: Vec, pub dblp: Vec, pub oai: Vec, pub hdl: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ReleaseExtIds".to_string(), ) } }; if let Some(key) = key_result { match key { "doi" => intermediate_rep .doi .push(String::from_str(val).map_err(|x| format!("{}", x))?), "wikidata_qid" => intermediate_rep .wikidata_qid .push(String::from_str(val).map_err(|x| format!("{}", x))?), "isbn13" => intermediate_rep .isbn13 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "pmid" => intermediate_rep .pmid .push(String::from_str(val).map_err(|x| format!("{}", x))?), "pmcid" => intermediate_rep .pmcid .push(String::from_str(val).map_err(|x| format!("{}", x))?), "core" => intermediate_rep .core .push(String::from_str(val).map_err(|x| format!("{}", x))?), "arxiv" => intermediate_rep .arxiv .push(String::from_str(val).map_err(|x| format!("{}", x))?), "jstor" => intermediate_rep .jstor .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ark" => intermediate_rep .ark .push(String::from_str(val).map_err(|x| format!("{}", x))?), "mag" => intermediate_rep .mag .push(String::from_str(val).map_err(|x| format!("{}", x))?), "doaj" => intermediate_rep .doaj .push(String::from_str(val).map_err(|x| format!("{}", x))?), "dblp" => intermediate_rep .dblp .push(String::from_str(val).map_err(|x| format!("{}", x))?), "oai" => intermediate_rep .oai .push(String::from_str(val).map_err(|x| format!("{}", x))?), "hdl" => intermediate_rep .hdl .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing ReleaseExtIds".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ReleaseExtIds { doi: intermediate_rep.doi.into_iter().next(), wikidata_qid: intermediate_rep.wikidata_qid.into_iter().next(), isbn13: intermediate_rep.isbn13.into_iter().next(), pmid: intermediate_rep.pmid.into_iter().next(), pmcid: intermediate_rep.pmcid.into_iter().next(), core: intermediate_rep.core.into_iter().next(), arxiv: intermediate_rep.arxiv.into_iter().next(), jstor: intermediate_rep.jstor.into_iter().next(), ark: intermediate_rep.ark.into_iter().next(), mag: intermediate_rep.mag.into_iter().next(), doaj: intermediate_rep.doaj.into_iter().next(), dblp: intermediate_rep.dblp.into_iter().next(), oai: intermediate_rep.oai.into_iter().next(), hdl: intermediate_rep.hdl.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for ReleaseRef - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into ReleaseRef - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct ReleaseRef { /// Zero-indexed sequence number of this reference in the list of references. Assigned automatically and used internally; don't confuse with `key`. #[serde(rename = "index")] #[serde(skip_serializing_if = "Option::is_none")] pub index: Option, /// Optional, fatcat identifier of release entity that this reference is citing. #[serde(rename = "target_release_id")] #[serde(skip_serializing_if = "Option::is_none")] pub target_release_id: Option, /// Additional free-form JSON metadata about this citation. Generally follows Citation Style Language (CSL) JSON schema. See guide for details. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Short string used to indicate this reference from within the release text; or numbering of references as typeset in the release itself. Optional; don't confuse with `index` field. #[serde(rename = "key")] #[serde(skip_serializing_if = "Option::is_none")] pub key: Option, /// Year that the cited work was published in. #[serde(rename = "year")] #[serde(skip_serializing_if = "Option::is_none")] pub year: Option, /// Name of the container (eg, journal) that the citation work was published as part of. May be an acronym or full name. #[serde(rename = "container_name")] #[serde(skip_serializing_if = "Option::is_none")] pub container_name: Option, /// Name of the work being cited. #[serde(rename = "title")] #[serde(skip_serializing_if = "Option::is_none")] pub title: Option, /// Page number or other indicator of the specific subset of a work being cited. Not to be confused with the first page (or page range) of an entire paper or chapter being cited. #[serde(rename = "locator")] #[serde(skip_serializing_if = "Option::is_none")] pub locator: Option, } impl ReleaseRef { pub fn new() -> ReleaseRef { ReleaseRef { index: None, target_release_id: None, extra: None, key: None, year: None, container_name: None, title: None, locator: None, } } } /// Converts the ReleaseRef value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for ReleaseRef { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref index) = self.index { params.push("index".to_string()); params.push(index.to_string()); } if let Some(ref target_release_id) = self.target_release_id { params.push("target_release_id".to_string()); params.push(target_release_id.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization if let Some(ref key) = self.key { params.push("key".to_string()); params.push(key.to_string()); } if let Some(ref year) = self.year { params.push("year".to_string()); params.push(year.to_string()); } if let Some(ref container_name) = self.container_name { params.push("container_name".to_string()); params.push(container_name.to_string()); } if let Some(ref title) = self.title { params.push("title".to_string()); params.push(title.to_string()); } if let Some(ref locator) = self.locator { params.push("locator".to_string()); params.push(locator.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a ReleaseRef value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for ReleaseRef { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub index: Vec, pub target_release_id: Vec, pub extra: Vec>, pub key: Vec, pub year: Vec, pub container_name: Vec, pub title: Vec, pub locator: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing ReleaseRef".to_string(), ) } }; if let Some(key) = key_result { match key { "index" => intermediate_rep .index .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "target_release_id" => intermediate_rep .target_release_id .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in ReleaseRef" .to_string(), ) } "key" => intermediate_rep .key .push(String::from_str(val).map_err(|x| format!("{}", x))?), "year" => intermediate_rep .year .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "container_name" => intermediate_rep .container_name .push(String::from_str(val).map_err(|x| format!("{}", x))?), "title" => intermediate_rep .title .push(String::from_str(val).map_err(|x| format!("{}", x))?), "locator" => intermediate_rep .locator .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing ReleaseRef".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(ReleaseRef { index: intermediate_rep.index.into_iter().next(), target_release_id: intermediate_rep.target_release_id.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), key: intermediate_rep.key.into_iter().next(), year: intermediate_rep.year.into_iter().next(), container_name: intermediate_rep.container_name.into_iter().next(), title: intermediate_rep.title.into_iter().next(), locator: intermediate_rep.locator.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for Success - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into Success - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct Success { #[serde(rename = "success")] pub success: bool, #[serde(rename = "message")] pub message: String, } impl Success { pub fn new(success: bool, message: String) -> Success { Success { success: success, message: message, } } } /// Converts the Success value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for Success { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("success".to_string()); params.push(self.success.to_string()); params.push("message".to_string()); params.push(self.message.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a Success value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for Success { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub success: Vec, pub message: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing Success".to_string(), ) } }; if let Some(key) = key_result { match key { "success" => intermediate_rep .success .push(bool::from_str(val).map_err(|x| format!("{}", x))?), "message" => intermediate_rep .message .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing Success".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(Success { success: intermediate_rep .success .into_iter() .next() .ok_or("success missing in Success".to_string())?, message: intermediate_rep .message .into_iter() .next() .ok_or("message missing in Success".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for WebcaptureAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into WebcaptureAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct WebcaptureAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl WebcaptureAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> WebcaptureAutoBatch { WebcaptureAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the WebcaptureAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for WebcaptureAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a WebcaptureAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for WebcaptureAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing WebcaptureAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureAutoBatch" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing WebcaptureAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(WebcaptureAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in WebcaptureAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in WebcaptureAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for WebcaptureCdxLine - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into WebcaptureCdxLine - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct WebcaptureCdxLine { /// \"Sortable URL\" format. See guide for details. #[serde(rename = "surt")] pub surt: String, /// Date and time of capture, in ISO format. UTC, 'Z'-terminated, second (or better) precision. #[serde(rename = "timestamp")] pub timestamp: chrono::DateTime, /// Full URL/URI of resource captured. #[serde(rename = "url")] pub url: String, /// Mimetype of the resource at this URL. May be the Content-Type header, or the actually sniffed file type. #[serde(rename = "mimetype")] #[serde(skip_serializing_if = "Option::is_none")] pub mimetype: Option, /// HTTP status code. Should generally be 200, especially for the primary resource, but may be 3xx (redirect) or even error codes if embedded resources can not be fetched successfully. #[serde(rename = "status_code")] #[serde(skip_serializing_if = "Option::is_none")] pub status_code: Option, /// Resource (file) size in bytes #[serde(rename = "size")] #[serde(skip_serializing_if = "Option::is_none")] pub size: Option, /// SHA-1 hash of data, in hex encoding #[serde(rename = "sha1")] pub sha1: String, /// SHA-256 hash of data, in hex encoding #[serde(rename = "sha256")] #[serde(skip_serializing_if = "Option::is_none")] pub sha256: Option, } impl WebcaptureCdxLine { pub fn new( surt: String, timestamp: chrono::DateTime, url: String, sha1: String, ) -> WebcaptureCdxLine { WebcaptureCdxLine { surt: surt, timestamp: timestamp, url: url, mimetype: None, status_code: None, size: None, sha1: sha1, sha256: None, } } } /// Converts the WebcaptureCdxLine value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for WebcaptureCdxLine { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("surt".to_string()); params.push(self.surt.to_string()); // Skipping timestamp in query parameter serialization params.push("url".to_string()); params.push(self.url.to_string()); if let Some(ref mimetype) = self.mimetype { params.push("mimetype".to_string()); params.push(mimetype.to_string()); } if let Some(ref status_code) = self.status_code { params.push("status_code".to_string()); params.push(status_code.to_string()); } if let Some(ref size) = self.size { params.push("size".to_string()); params.push(size.to_string()); } params.push("sha1".to_string()); params.push(self.sha1.to_string()); if let Some(ref sha256) = self.sha256 { params.push("sha256".to_string()); params.push(sha256.to_string()); } params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a WebcaptureCdxLine value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for WebcaptureCdxLine { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub surt: Vec, pub timestamp: Vec>, pub url: Vec, pub mimetype: Vec, pub status_code: Vec, pub size: Vec, pub sha1: Vec, pub sha256: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing WebcaptureCdxLine".to_string(), ) } }; if let Some(key) = key_result { match key { "surt" => intermediate_rep .surt .push(String::from_str(val).map_err(|x| format!("{}", x))?), "timestamp" => intermediate_rep.timestamp.push( chrono::DateTime::::from_str(val) .map_err(|x| format!("{}", x))?, ), "url" => intermediate_rep .url .push(String::from_str(val).map_err(|x| format!("{}", x))?), "mimetype" => intermediate_rep .mimetype .push(String::from_str(val).map_err(|x| format!("{}", x))?), "status_code" => intermediate_rep .status_code .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "size" => intermediate_rep .size .push(i64::from_str(val).map_err(|x| format!("{}", x))?), "sha1" => intermediate_rep .sha1 .push(String::from_str(val).map_err(|x| format!("{}", x))?), "sha256" => intermediate_rep .sha256 .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing WebcaptureCdxLine".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(WebcaptureCdxLine { surt: intermediate_rep .surt .into_iter() .next() .ok_or("surt missing in WebcaptureCdxLine".to_string())?, timestamp: intermediate_rep .timestamp .into_iter() .next() .ok_or("timestamp missing in WebcaptureCdxLine".to_string())?, url: intermediate_rep .url .into_iter() .next() .ok_or("url missing in WebcaptureCdxLine".to_string())?, mimetype: intermediate_rep.mimetype.into_iter().next(), status_code: intermediate_rep.status_code.into_iter().next(), size: intermediate_rep.size.into_iter().next(), sha1: intermediate_rep .sha1 .into_iter() .next() .ok_or("sha1 missing in WebcaptureCdxLine".to_string())?, sha256: intermediate_rep.sha256.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for WebcaptureEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into WebcaptureEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct WebcaptureEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, #[serde(rename = "cdx")] #[serde(skip_serializing_if = "Option::is_none")] pub cdx: Option>, #[serde(rename = "archive_urls")] #[serde(skip_serializing_if = "Option::is_none")] pub archive_urls: Option>, /// Base URL of the primary resource this is a capture of #[serde(rename = "original_url")] #[serde(skip_serializing_if = "Option::is_none")] pub original_url: Option, /// Same format as CDX line timestamp (UTC, etc). Corresponds to the overall capture timestamp. Should generally be the timestamp of capture of the primary resource URL. #[serde(rename = "timestamp")] #[serde(skip_serializing_if = "Option::is_none")] pub timestamp: Option>, /// Set of identifier of release entities this fileset represents a full manifestation of. Usually a single release. #[serde(rename = "release_ids")] #[serde(skip_serializing_if = "Option::is_none")] pub release_ids: Option>, /// Full release entities, included in GET responses when `releases` included in `expand` parameter. Ignored if included in PUT or POST requests. #[serde(rename = "releases")] #[serde(skip_serializing_if = "Option::is_none")] pub releases: Option>, } impl WebcaptureEntity { pub fn new() -> WebcaptureEntity { WebcaptureEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, cdx: None, archive_urls: None, original_url: None, timestamp: None, release_ids: None, releases: None, } } } /// Converts the WebcaptureEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for WebcaptureEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping cdx in query parameter serialization // Skipping archive_urls in query parameter serialization if let Some(ref original_url) = self.original_url { params.push("original_url".to_string()); params.push(original_url.to_string()); } // Skipping timestamp in query parameter serialization if let Some(ref release_ids) = self.release_ids { params.push("release_ids".to_string()); params.push( release_ids .iter() .map(|x| x.to_string()) .collect::>() .join(",") .to_string(), ); } // Skipping releases in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a WebcaptureEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for WebcaptureEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, pub cdx: Vec>, pub archive_urls: Vec>, pub original_url: Vec, pub timestamp: Vec>, pub release_ids: Vec>, pub releases: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing WebcaptureEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureEntity" .to_string(), ), "edit_extra" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureEntity" .to_string(), ), "cdx" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureEntity" .to_string(), ), "archive_urls" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureEntity" .to_string(), ), "original_url" => intermediate_rep .original_url .push(String::from_str(val).map_err(|x| format!("{}", x))?), "timestamp" => intermediate_rep.timestamp.push( chrono::DateTime::::from_str(val) .map_err(|x| format!("{}", x))?, ), "release_ids" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureEntity" .to_string(), ), "releases" => return std::result::Result::Err( "Parsing a container in this style is not supported in WebcaptureEntity" .to_string(), ), _ => { return std::result::Result::Err( "Unexpected key while parsing WebcaptureEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(WebcaptureEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), cdx: intermediate_rep.cdx.into_iter().next(), archive_urls: intermediate_rep.archive_urls.into_iter().next(), original_url: intermediate_rep.original_url.into_iter().next(), timestamp: intermediate_rep.timestamp.into_iter().next(), release_ids: intermediate_rep.release_ids.into_iter().next(), releases: intermediate_rep.releases.into_iter().next(), }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for WebcaptureUrl - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into WebcaptureUrl - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct WebcaptureUrl { /// URL/URI pointing to archive of this web resource. #[serde(rename = "url")] pub url: String, /// Type of archive endpoint. Usually `wayback` (WBM replay of primary resource), or `warc` (direct URL to a WARC file containing all resources of the capture). See guide for full list. #[serde(rename = "rel")] pub rel: String, } impl WebcaptureUrl { pub fn new(url: String, rel: String) -> WebcaptureUrl { WebcaptureUrl { url: url, rel: rel } } } /// Converts the WebcaptureUrl value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for WebcaptureUrl { fn to_string(&self) -> String { let mut params: Vec = vec![]; params.push("url".to_string()); params.push(self.url.to_string()); params.push("rel".to_string()); params.push(self.rel.to_string()); params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a WebcaptureUrl value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for WebcaptureUrl { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub url: Vec, pub rel: Vec, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing WebcaptureUrl".to_string(), ) } }; if let Some(key) = key_result { match key { "url" => intermediate_rep .url .push(String::from_str(val).map_err(|x| format!("{}", x))?), "rel" => intermediate_rep .rel .push(String::from_str(val).map_err(|x| format!("{}", x))?), _ => { return std::result::Result::Err( "Unexpected key while parsing WebcaptureUrl".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(WebcaptureUrl { url: intermediate_rep .url .into_iter() .next() .ok_or("url missing in WebcaptureUrl".to_string())?, rel: intermediate_rep .rel .into_iter() .next() .ok_or("rel missing in WebcaptureUrl".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for WorkAutoBatch - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into WorkAutoBatch - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct WorkAutoBatch { #[serde(rename = "editgroup")] pub editgroup: models::Editgroup, #[serde(rename = "entity_list")] pub entity_list: Vec, } impl WorkAutoBatch { pub fn new( editgroup: models::Editgroup, entity_list: Vec, ) -> WorkAutoBatch { WorkAutoBatch { editgroup: editgroup, entity_list: entity_list, } } } /// Converts the WorkAutoBatch value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for WorkAutoBatch { fn to_string(&self) -> String { let mut params: Vec = vec![]; // Skipping editgroup in query parameter serialization // Skipping entity_list in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a WorkAutoBatch value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for WorkAutoBatch { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub editgroup: Vec, pub entity_list: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing WorkAutoBatch".to_string(), ) } }; if let Some(key) = key_result { match key { "editgroup" => intermediate_rep .editgroup .push(models::Editgroup::from_str(val).map_err(|x| format!("{}", x))?), "entity_list" => { return std::result::Result::Err( "Parsing a container in this style is not supported in WorkAutoBatch" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing WorkAutoBatch".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(WorkAutoBatch { editgroup: intermediate_rep .editgroup .into_iter() .next() .ok_or("editgroup missing in WorkAutoBatch".to_string())?, entity_list: intermediate_rep .entity_list .into_iter() .next() .ok_or("entity_list missing in WorkAutoBatch".to_string())?, }) } } // Methods for converting between header::IntoHeaderValue and hyper::header::HeaderValue #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom> for hyper::header::HeaderValue { type Error = String; fn try_from( hdr_value: header::IntoHeaderValue, ) -> std::result::Result { let hdr_value = hdr_value.to_string(); match hyper::header::HeaderValue::from_str(&hdr_value) { std::result::Result::Ok(value) => std::result::Result::Ok(value), std::result::Result::Err(e) => std::result::Result::Err(format!( "Invalid header value for WorkEntity - value: {} is invalid {}", hdr_value, e )), } } } #[cfg(any(feature = "client", feature = "server"))] impl std::convert::TryFrom for header::IntoHeaderValue { type Error = String; fn try_from(hdr_value: hyper::header::HeaderValue) -> std::result::Result { match hdr_value.to_str() { std::result::Result::Ok(value) => { match ::from_str(value) { std::result::Result::Ok(value) => { std::result::Result::Ok(header::IntoHeaderValue(value)) } std::result::Result::Err(err) => std::result::Result::Err(format!( "Unable to convert header value '{}' into WorkEntity - {}", value, err )), } } std::result::Result::Err(e) => std::result::Result::Err(format!( "Unable to convert header: {:?} to string: {}", hdr_value, e )), } } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] pub struct WorkEntity { // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "state")] #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, /// base32-encoded unique identifier #[serde(rename = "ident")] #[serde(skip_serializing_if = "Option::is_none")] pub ident: Option, /// UUID (lower-case, dash-separated, hex-encoded 128-bit) #[serde(rename = "revision")] #[serde(skip_serializing_if = "Option::is_none")] pub revision: Option, /// base32-encoded unique identifier #[serde(rename = "redirect")] #[serde(skip_serializing_if = "Option::is_none")] pub redirect: Option, /// Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option>, /// Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). #[serde(rename = "edit_extra")] #[serde(skip_serializing_if = "Option::is_none")] pub edit_extra: Option>, } impl WorkEntity { pub fn new() -> WorkEntity { WorkEntity { state: None, ident: None, revision: None, redirect: None, extra: None, edit_extra: None, } } } /// Converts the WorkEntity value to the Query Parameters representation (style=form, explode=false) /// specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde serializer impl std::string::ToString for WorkEntity { fn to_string(&self) -> String { let mut params: Vec = vec![]; if let Some(ref state) = self.state { params.push("state".to_string()); params.push(state.to_string()); } if let Some(ref ident) = self.ident { params.push("ident".to_string()); params.push(ident.to_string()); } if let Some(ref revision) = self.revision { params.push("revision".to_string()); params.push(revision.to_string()); } if let Some(ref redirect) = self.redirect { params.push("redirect".to_string()); params.push(redirect.to_string()); } // Skipping extra in query parameter serialization // Skipping extra in query parameter serialization // Skipping edit_extra in query parameter serialization // Skipping edit_extra in query parameter serialization params.join(",").to_string() } } /// Converts Query Parameters representation (style=form, explode=false) to a WorkEntity value /// as specified in https://swagger.io/docs/specification/serialization/ /// Should be implemented in a serde deserializer impl std::str::FromStr for WorkEntity { type Err = String; fn from_str(s: &str) -> std::result::Result { #[derive(Default)] // An intermediate representation of the struct to use for parsing. struct IntermediateRep { pub state: Vec, pub ident: Vec, pub revision: Vec, pub redirect: Vec, pub extra: Vec>, pub edit_extra: Vec>, } let mut intermediate_rep = IntermediateRep::default(); // Parse into intermediate representation let mut string_iter = s.split(',').into_iter(); let mut key_result = string_iter.next(); while key_result.is_some() { let val = match string_iter.next() { Some(x) => x, None => { return std::result::Result::Err( "Missing value while parsing WorkEntity".to_string(), ) } }; if let Some(key) = key_result { match key { "state" => intermediate_rep .state .push(String::from_str(val).map_err(|x| format!("{}", x))?), "ident" => intermediate_rep .ident .push(String::from_str(val).map_err(|x| format!("{}", x))?), "revision" => intermediate_rep .revision .push(String::from_str(val).map_err(|x| format!("{}", x))?), "redirect" => intermediate_rep .redirect .push(String::from_str(val).map_err(|x| format!("{}", x))?), "extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in WorkEntity" .to_string(), ) } "edit_extra" => { return std::result::Result::Err( "Parsing a container in this style is not supported in WorkEntity" .to_string(), ) } _ => { return std::result::Result::Err( "Unexpected key while parsing WorkEntity".to_string(), ) } } } // Get the next key key_result = string_iter.next(); } // Use the intermediate representation to return the struct std::result::Result::Ok(WorkEntity { state: intermediate_rep.state.into_iter().next(), ident: intermediate_rep.ident.into_iter().next(), revision: intermediate_rep.revision.into_iter().next(), redirect: intermediate_rep.redirect.into_iter().next(), extra: intermediate_rep.extra.into_iter().next(), edit_extra: intermediate_rep.edit_extra.into_iter().next(), }) } }