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