openapi_nexus/parser/
mod.rs1pub mod error;
2#[allow(clippy::module_inception)]
3pub mod parser;
4pub mod serde_error;
5
6pub use error::ParseError;
7pub use parser::{
8 parse_content_json, parse_content_json_v31, parse_content_yaml, parse_content_yaml_v31,
9 parse_file,
10};
11pub use serde_error::SerdeErrorExtractor;
12
13use crate::spec::{OpenApiV30Spec, OpenApiV31Spec, OpenApiV32Spec};
14
15#[derive(Debug)]
16pub enum ParsedSpec {
17 V30(Box<OpenApiV30Spec>),
18 V31(Box<OpenApiV31Spec>),
19 V32(Box<OpenApiV32Spec>),
20}
21
22impl ParsedSpec {
23 pub fn version_tag(&self) -> &'static str {
24 match self {
25 ParsedSpec::V30(_) => "3.0",
26 ParsedSpec::V31(_) => "3.1",
27 ParsedSpec::V32(_) => "3.2",
28 }
29 }
30
31 pub fn as_v32(&self) -> Option<&OpenApiV32Spec> {
32 match self {
33 ParsedSpec::V32(spec) => Some(spec),
34 _ => None,
35 }
36 }
37
38 pub fn as_v31(&self) -> Option<&OpenApiV31Spec> {
39 match self {
40 ParsedSpec::V31(spec) => Some(spec),
41 _ => None,
42 }
43 }
44
45 pub fn as_v30(&self) -> Option<&OpenApiV30Spec> {
46 match self {
47 ParsedSpec::V30(spec) => Some(spec),
48 _ => None,
49 }
50 }
51}