schemadoc_diff/schemas/openapi310/
context.rs

1use crate::schemas::openapi310::schema::*;
2
3pub fn deref_schema<'a>(
4    components: &'a Option<Components>,
5    reference: &str,
6) -> Option<&'a Schema> {
7    components.as_ref().and_then(|components| {
8        components.schemas.as_ref().and_then(|map| {
9            map.get(&reference.replace("#/components/schemas/", ""))
10                .map(|may_be_schema| match may_be_schema {
11                    MayBeRef310::Value(value) => value,
12                    _ => unimplemented!(),
13                })
14        })
15    })
16}
17
18pub fn deref_parameter<'a>(
19    components: &'a Option<Components>,
20    reference: &str,
21) -> Option<&'a Parameter> {
22    components.as_ref().and_then(|components| {
23        components.parameters.as_ref().and_then(|map| {
24            map.get(&reference.replace("#/components/parameters/", ""))
25                .map(|may_be_parameter| match may_be_parameter {
26                    MayBeRef310::Value(value) => value,
27                    _ => unimplemented!(),
28                })
29        })
30    })
31}
32
33pub fn deref_example<'a>(
34    swagger: &'a OpenApi310,
35    reference: &str,
36) -> Option<&'a Example> {
37    swagger.components.as_ref().and_then(|components| {
38        components.examples.as_ref().and_then(|map| {
39            map.get(&reference.replace("#/components/examples/", ""))
40                .map(|may_be_example| match may_be_example {
41                    MayBeRef310::Value(value) => value,
42                    _ => unimplemented!(),
43                })
44        })
45    })
46}
47
48pub fn deref_request_body<'a>(
49    swagger: &'a OpenApi310,
50    reference: &str,
51) -> Option<&'a RequestBody> {
52    swagger.components.as_ref().and_then(|components| {
53        components.request_bodies.as_ref().and_then(|map| {
54            map.get(&reference.replace("#/components/requestBodies/", ""))
55                .map(|may_be_request_body| match may_be_request_body {
56                    MayBeRef310::Value(value) => value,
57                    _ => unimplemented!(),
58                })
59        })
60    })
61}
62
63pub fn deref_header<'a>(
64    swagger: &'a OpenApi310,
65    reference: &str,
66) -> Option<&'a Header> {
67    swagger.components.as_ref().and_then(|components| {
68        components.headers.as_ref().and_then(|map| {
69            map.get(&reference.replace("#/components/headers/", ""))
70                .map(|may_be_header| match may_be_header {
71                    MayBeRef310::Value(value) => value,
72                    _ => unimplemented!(),
73                })
74        })
75    })
76}
77
78pub fn deref_security_scheme<'a>(
79    swagger: &'a OpenApi310,
80    reference: &str,
81) -> Option<&'a SecurityScheme> {
82    swagger.components.as_ref().and_then(|components| {
83        components.security_schemes.as_ref().and_then(|map| {
84            map.get(&reference.replace("#/components/securitySchemes/", ""))
85                .map(|may_be_security_scheme| match may_be_security_scheme {
86                    MayBeRef310::Value(value) => value,
87                    _ => unimplemented!(),
88                })
89        })
90    })
91}
92
93pub fn deref_link<'a>(
94    swagger: &'a OpenApi310,
95    reference: &str,
96) -> Option<&'a Link> {
97    swagger.components.as_ref().and_then(|components| {
98        components.links.as_ref().and_then(|map| {
99            map.get(&reference.replace("#/components/links/", "")).map(
100                |may_be_link| match may_be_link {
101                    MayBeRef310::Value(value) => value,
102                    _ => unimplemented!(),
103                },
104            )
105        })
106    })
107}
108
109pub fn deref_response<'a>(
110    swagger: &'a OpenApi310,
111    reference: &str,
112) -> Option<&'a Response> {
113    swagger.components.as_ref().and_then(|components| {
114        components.responses.as_ref().and_then(|map| {
115            map.get(&reference.replace("#/components/responses/", ""))
116                .map(|may_be_response| match may_be_response {
117                    MayBeRef310::Value(value) => value,
118                    _ => unimplemented!(),
119                })
120        })
121    })
122}