Skip to content

Commit 359424b

Browse files
committed
Reducing common struct types
Signed-off-by: Dawid Nowak <[email protected]>
1 parent b7f84d2 commit 359424b

25 files changed

+403
-987
lines changed

gateway-api/src/apis/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pub mod experimental;
22
pub mod standard;
3+
34
pub mod processed;

gateway-api/src/apis/processed/common_types.rs

Lines changed: 158 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,9 @@ mod prelude {
1010
}
1111
use self::prelude::*;
1212
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
13-
pub struct RouteRef {
14-
#[serde(default, skip_serializing_if = "Option::is_none")]
15-
pub group: Option<String>,
16-
#[serde(default, skip_serializing_if = "Option::is_none")]
17-
pub kind: Option<String>,
13+
pub struct HTTPHeader {
1814
pub name: String,
19-
#[serde(default, skip_serializing_if = "Option::is_none")]
20-
pub namespace: Option<String>,
21-
#[serde(default, skip_serializing_if = "Option::is_none")]
22-
pub port: Option<i32>,
23-
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sectionName")]
24-
pub section_name: Option<String>,
15+
pub value: String,
2516
}
2617
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
2718
pub struct MirrorBackendRef {
@@ -42,105 +33,210 @@ pub struct Kind {
4233
pub kind: String,
4334
}
4435
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
45-
pub struct ExtensionBackendRef {
46-
pub group: String,
47-
pub kind: String,
48-
pub name: String,
49-
}
50-
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
5136
pub struct GatewayAddress {
5237
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
5338
pub r#type: Option<String>,
5439
pub value: String,
5540
}
5641
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
57-
pub struct HeaderModifierRules {
42+
pub struct RouteRef {
43+
#[serde(default, skip_serializing_if = "Option::is_none")]
44+
pub group: Option<String>,
45+
#[serde(default, skip_serializing_if = "Option::is_none")]
46+
pub kind: Option<String>,
5847
pub name: String,
59-
pub value: String,
48+
#[serde(default, skip_serializing_if = "Option::is_none")]
49+
pub namespace: Option<String>,
50+
#[serde(default, skip_serializing_if = "Option::is_none")]
51+
pub port: Option<i32>,
52+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sectionName")]
53+
pub section_name: Option<String>,
6054
}
61-
/// RequestRedirect defines a schema for a filter that responds to the
62-
/// request with an HTTP redirection.
55+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
56+
pub struct ExtensionBackendRef {
57+
pub group: String,
58+
pub kind: String,
59+
pub name: String,
60+
}
61+
/// GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request
62+
/// headers.
63+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
64+
pub enum HeaderMatchesType {
65+
Exact,
66+
RegularExpression,
67+
}
68+
/// Path defines parameters used to modify the path of the incoming request.
69+
/// The modified path is then used to construct the `Location` header. When
70+
/// empty, the request path is used as-is.
6371
///
64-
/// Support: Core
72+
/// Support: Extended
6573
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
66-
pub enum FiltersHTTPRedirectRequestRouteRulesScheme {
67-
#[serde(rename = "http")]
68-
Http,
69-
#[serde(rename = "https")]
70-
Https,
74+
pub enum HTTPPathType {
75+
ReplaceFullPath,
76+
ReplacePrefixMatch,
7177
}
7278
/// RequestRedirect defines a schema for a filter that responds to the
7379
/// request with an HTTP redirection.
7480
///
7581
/// Support: Core
7682
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
77-
pub enum CodeFiltersHTTPRedirectRequestRouteRulesStatus {
83+
pub enum RedirectStatusCode {
7884
#[serde(rename = "301")]
7985
r#_301,
8086
#[serde(rename = "302")]
8187
r#_302,
8288
}
83-
/// GRPCRouteFilter defines processing steps that must be completed during the
84-
/// request or response lifecycle. GRPCRouteFilters are meant as an extension
89+
/// HTTPRouteFilter defines processing steps that must be completed during the
90+
/// request or response lifecycle. HTTPRouteFilters are meant as an extension
8591
/// point to express processing that may be done in Gateway implementations. Some
8692
/// examples include request or response modification, implementing
8793
/// authentication strategies, rate-limiting, and traffic shaping. API
8894
/// guarantee/conformance is defined based on the type of the filter.
8995
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
90-
pub enum FiltersGRPCRouteRulesType {
91-
ResponseHeaderModifier,
96+
pub enum HTTPFilterType {
9297
RequestHeaderModifier,
98+
ResponseHeaderModifier,
9399
RequestMirror,
100+
RequestRedirect,
101+
#[serde(rename = "URLRewrite")]
102+
UrlRewrite,
94103
ExtensionRef,
95104
}
96-
/// GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request
97-
/// headers.
98-
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
99-
pub enum MatchesRouteRulesType {
100-
Exact,
101-
RegularExpression,
102-
}
103-
/// Path defines parameters used to modify the path of the incoming request.
104-
/// The modified path is then used to construct the `Location` header. When
105-
/// empty, the request path is used as-is.
105+
/// RequestRedirect defines a schema for a filter that responds to the
106+
/// request with an HTTP redirection.
106107
///
107-
/// Support: Extended
108+
/// Support: Core
108109
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
109-
pub enum FiltersHTTPPathRouteRulesType {
110-
ReplaceFullPath,
111-
ReplacePrefixMatch,
110+
pub enum HTTPRedirectScheme {
111+
#[serde(rename = "http")]
112+
Http,
113+
#[serde(rename = "https")]
114+
Https,
112115
}
113-
/// HTTPRouteFilter defines processing steps that must be completed during the
114-
/// request or response lifecycle. HTTPRouteFilters are meant as an extension
116+
/// GRPCRouteFilter defines processing steps that must be completed during the
117+
/// request or response lifecycle. GRPCRouteFilters are meant as an extension
115118
/// point to express processing that may be done in Gateway implementations. Some
116119
/// examples include request or response modification, implementing
117120
/// authentication strategies, rate-limiting, and traffic shaping. API
118121
/// guarantee/conformance is defined based on the type of the filter.
119122
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
120-
pub enum FiltersHTTPRouteRulesType {
121-
RequestHeaderModifier,
123+
pub enum GRPCFilterType {
122124
ResponseHeaderModifier,
125+
RequestHeaderModifier,
123126
RequestMirror,
124-
RequestRedirect,
125-
#[serde(rename = "URLRewrite")]
126-
UrlRewrite,
127127
ExtensionRef,
128128
}
129-
130-
131-
// Next attempt
132-
133129
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
134-
pub struct FilterMirrorRouteRules {
130+
pub struct ParentsRouteStatus {
131+
#[serde(default, skip_serializing_if = "Option::is_none")]
132+
pub conditions: Option<Vec<Condition>>,
133+
#[serde(rename = "controllerName")]
134+
pub controller_name: String,
135+
#[serde(rename = "parentRef")]
136+
pub parent_ref: RouteRef,
137+
}
138+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
139+
pub struct HTTPPathModifier {
140+
#[serde(
141+
default,
142+
skip_serializing_if = "Option::is_none",
143+
rename = "replaceFullPath"
144+
)]
145+
pub replace_full_path: Option<String>,
146+
#[serde(
147+
default,
148+
skip_serializing_if = "Option::is_none",
149+
rename = "replacePrefixMatch"
150+
)]
151+
pub replace_prefix_match: Option<String>,
152+
#[serde(rename = "type")]
153+
pub r#type: HTTPPathType,
154+
}
155+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
156+
pub struct HeaderModifier {
157+
#[serde(default, skip_serializing_if = "Option::is_none")]
158+
pub add: Option<Vec<HTTPHeader>>,
159+
#[serde(default, skip_serializing_if = "Option::is_none")]
160+
pub remove: Option<Vec<String>>,
161+
#[serde(default, skip_serializing_if = "Option::is_none")]
162+
pub set: Option<Vec<HTTPHeader>>,
163+
}
164+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
165+
pub struct RequestMirrorModifier {
135166
#[serde(rename = "backendRef")]
136167
pub backend_ref: MirrorBackendRef,
137168
}
138169
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
139-
pub struct FilterHeaderRouteRules {
170+
pub struct HTTPRequestRewrite {
140171
#[serde(default, skip_serializing_if = "Option::is_none")]
141-
pub add: Option<Vec<HeaderModifierRules>>,
172+
pub hostname: Option<String>,
142173
#[serde(default, skip_serializing_if = "Option::is_none")]
143-
pub remove: Option<Vec<String>>,
174+
pub path: Option<HTTPPathModifier>,
175+
}
176+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
177+
pub struct HTTPRequestRedirect {
178+
#[serde(default, skip_serializing_if = "Option::is_none")]
179+
pub hostname: Option<String>,
144180
#[serde(default, skip_serializing_if = "Option::is_none")]
145-
pub set: Option<Vec<HeaderModifierRules>>,
181+
pub path: Option<HTTPPathModifier>,
182+
#[serde(default, skip_serializing_if = "Option::is_none")]
183+
pub port: Option<i32>,
184+
#[serde(default, skip_serializing_if = "Option::is_none")]
185+
pub scheme: Option<HTTPRedirectScheme>,
186+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "statusCode")]
187+
pub status_code: Option<i64>,
188+
}
189+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
190+
pub struct GRPCRouteFilter {
191+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "extensionRef")]
192+
pub extension_ref: Option<ExtensionBackendRef>,
193+
#[serde(
194+
default,
195+
skip_serializing_if = "Option::is_none",
196+
rename = "requestHeaderModifier"
197+
)]
198+
pub request_header_modifier: Option<HeaderModifier>,
199+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "requestMirror")]
200+
pub request_mirror: Option<RequestMirrorModifier>,
201+
#[serde(
202+
default,
203+
skip_serializing_if = "Option::is_none",
204+
rename = "responseHeaderModifier"
205+
)]
206+
pub response_header_modifier: Option<HeaderModifier>,
207+
#[serde(rename = "type")]
208+
pub r#type: GRPCFilterType,
209+
}
210+
211+
212+
// Next attempt
213+
214+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
215+
pub struct HTTPRouteFilter {
216+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "extensionRef")]
217+
pub extension_ref: Option<ExtensionBackendRef>,
218+
#[serde(
219+
default,
220+
skip_serializing_if = "Option::is_none",
221+
rename = "requestHeaderModifier"
222+
)]
223+
pub request_header_modifier: Option<HeaderModifier>,
224+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "requestMirror")]
225+
pub request_mirror: Option<RequestMirrorModifier>,
226+
#[serde(
227+
default,
228+
skip_serializing_if = "Option::is_none",
229+
rename = "requestRedirect"
230+
)]
231+
pub request_redirect: Option<HTTPRequestRedirect>,
232+
#[serde(
233+
default,
234+
skip_serializing_if = "Option::is_none",
235+
rename = "responseHeaderModifier"
236+
)]
237+
pub response_header_modifier: Option<HeaderModifier>,
238+
#[serde(rename = "type")]
239+
pub r#type: HTTPFilterType,
240+
#[serde(default, skip_serializing_if = "Option::is_none", rename = "urlRewrite")]
241+
pub url_rewrite: Option<HTTPRequestRewrite>,
146242
}
Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
use super::common_types::*;
22
// WARNING: generated file - manual changes will be overriden
33

4-
impl Default for FiltersGRPCRouteRulesType {
4+
impl Default for GRPCFilterType {
55
fn default() -> Self {
6-
FiltersGRPCRouteRulesType::RequestHeaderModifier
6+
GRPCFilterType::RequestHeaderModifier
77
}
88
}
99

10-
impl Default for FiltersHTTPPathRouteRulesType {
10+
impl Default for HTTPFilterType {
1111
fn default() -> Self {
12-
FiltersHTTPPathRouteRulesType::ReplaceFullPath
12+
HTTPFilterType::RequestHeaderModifier
1313
}
1414
}
1515

16-
impl Default for FiltersHTTPRedirectRequestRouteRulesScheme {
16+
impl Default for HTTPPathType {
1717
fn default() -> Self {
18-
FiltersHTTPRedirectRequestRouteRulesScheme::Http
19-
}
20-
}
21-
22-
impl Default for FiltersHTTPRouteRulesType {
23-
fn default() -> Self {
24-
FiltersHTTPRouteRulesType::RequestHeaderModifier
18+
HTTPPathType::ReplaceFullPath
2519
}
2620
}

0 commit comments

Comments
 (0)