diff --git a/Cargo.toml b/Cargo.toml index 9eada03..b2ccbe1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,14 +2,15 @@ authors = ["Alex Whitney "] name = "openapi3" version = "0.1.0" +edition = "2018" [dependencies] -error-chain = "0.10" -regex = "0.2" +error-chain = "0.12" +regex = "1.3.3" schemafy = "0.3" serde_derive = "1" serde_json = "1.0.2" -serde_yaml = "0.7" +serde_yaml = "0.8" [dependencies.serde] features = ["rc"] diff --git a/src/lib.rs b/src/lib.rs index 8762bfc..b3b15b5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,25 +1,18 @@ -#[macro_use] -extern crate error_chain; -extern crate serde; -#[macro_use] -extern crate serde_derive; -extern crate serde_yaml; -extern crate serde_json; -extern crate schemafy; -extern crate regex; - +use std::collections::BTreeMap; use std::fs::File; use std::io::{Read, Write}; -use std::collections::BTreeMap; -use objects::*; -pub use objects::Schema; -pub use errors::*; +use error_chain::bail; +use serde_derive::{Deserialize, Serialize}; + +pub use crate::errors::*; +pub use crate::objects::Schema; +use crate::objects::*; pub mod objects; mod errors { - error_chain!{ + error_chain::error_chain! { foreign_links { Io(::std::io::Error); Yaml(::serde_yaml::Error); @@ -42,21 +35,19 @@ impl MaybeRef { pub fn resolve_ref<'a>(&'a self, map: &'a MapMaybeRef) -> Result<&'a T> { match *self { MaybeRef::Concrete(ref inner) => Ok(inner), - MaybeRef::Ref(ref r) => { - match r.ref_.rfind("/") { - None => bail!("Reference {} is not valid path", r.ref_), - Some(loc) => { - let (_, name) = r.ref_.split_at(loc + 1); - match map.get(name) { - Some(&MaybeRef::Concrete(ref inner)) => Ok(inner), - Some(&MaybeRef::Ref(ref ref_)) => { - bail!("Recursive reference {}", ref_.ref_) - } - None => bail!("Reference {} not found", name), + MaybeRef::Ref(ref r) => match r.ref_.rfind("/") { + None => bail!("Reference {} is not valid path", r.ref_), + Some(loc) => { + let (_, name) = r.ref_.split_at(loc + 1); + match map.get(name) { + Some(&MaybeRef::Concrete(ref inner)) => Ok(inner), + Some(&MaybeRef::Ref(ref ref_)) => { + bail!("Recursive reference {}", ref_.ref_) } + None => bail!("Reference {} not found", name), } } - } + }, } } @@ -126,7 +117,6 @@ impl OpenApi { } } - #[cfg(test)] mod tests { use super::*; diff --git a/src/objects.rs b/src/objects.rs index 012ec13..aa6b961 100644 --- a/src/objects.rs +++ b/src/objects.rs @@ -1,9 +1,11 @@ -pub use serde_yaml::Value as YamlValue; -pub use schemafy::schema::{Schema, SimpleTypes}; use schemafy; +pub use schemafy::schema::{Schema, SimpleTypes}; +use serde_derive::{Deserialize, Serialize}; use serde_json; -use Result; -use {MaybeRef, Map, MapMaybeRef}; +pub use serde_yaml::Value as YamlValue; + +use crate::Result; +use crate::{Map, MapMaybeRef, MaybeRef}; pub trait CodeGen { fn generate_code(&self, name: &str) -> Result;