1use serde::{Deserialize, Serialize};
2use std::{fs::File, io::Read, path::Path, result::Result};
3
4pub mod extension;
5pub mod v2;
6pub mod v3;
7
8pub use extension::*;
9use v2::*;
10use v3::*;
11#[derive(Debug, Deserialize, Serialize, PartialEq)]
13#[serde(untagged)]
14pub enum Doc {
15 V2(Swagger),
16 V3(v3::OpenApi),
17}
18
19pub fn from_path<P>(path: P) -> Result<Doc, serde_json::Error>
21where
22 P: AsRef<Path>,
23{
24 from_reader(File::open(path).unwrap())
25}
26
27pub fn from_str(str: &str) -> Result<Doc, serde_json::Error> {
29 serde_json::from_str(str)
30}
31
32pub fn from_reader<R>(read: R) -> Result<Doc, serde_json::Error>
34where
35 R: Read,
36{
37 serde_json::from_reader::<R, Doc>(read)
38}
39
40pub fn swagger_from_reader<R>(read: R) -> Result<Swagger, serde_json::Error>
42where
43 R: Read,
44{
45 serde_json::from_reader::<R, Swagger>(read)
46}
47
48pub fn openapi_from_reader<R>(read: R) -> Result<OpenApi, serde_json::Error>
50where
51 R: Read,
52{
53 serde_json::from_reader::<R, OpenApi>(read)
54}