openapi_schema/
lib.rs

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/// Supported versions of the OpenApi.
12#[derive(Debug, Deserialize, Serialize, PartialEq)]
13#[serde(untagged)]
14pub enum Doc {
15    V2(Swagger),
16    V3(v3::OpenApi),
17}
18
19/// deserialize an open api spec from a path
20pub 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
27/// deserialize from a string
28pub fn from_str(str: &str) -> Result<Doc, serde_json::Error> {
29    serde_json::from_str(str)
30}
31
32/// deserialize an open api spec from type which implements Read
33pub 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
40/// deserialize an swagger from type which implements Read
41pub 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
48/// deserialize an openapi from type which implements Read
49pub 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}