Skip to content

Commit 6685f88

Browse files
authored
Replace duplicate error enums with a single variant per schema (#77)
1 parent 6ba2234 commit 6685f88

File tree

83 files changed

+590
-1921
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+590
-1921
lines changed

.generator/src/generator/openapi.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from yaml import CSafeLoader
1212

1313
from . import formatter
14+
from .utils import schema_name
1415

1516

1617
def load(filename):
@@ -113,19 +114,18 @@ def get_type_for_response(response, version):
113114
if "content" in response:
114115
for content in response["content"].values():
115116
if "schema" in content:
116-
return type_to_rust(content["schema"], version=version)
117+
schema = content["schema"]
118+
return type_to_rust(schema, version=version, render_option=False), schema_name(schema)
117119

118120

119121
def responses_by_types(operation, version):
120122
result = {}
121123
for response_code, response in operation["responses"].items():
122124
if int(response_code) < 300:
123125
continue
124-
response_type = get_type_for_response(response, version)
125-
if response_type in result:
126-
result[response_type][1].append(response_code)
127-
else:
128-
result[response_type] = [response, [response_code]]
126+
response_type, response_name = get_type_for_response(response, version)
127+
if response_type not in result:
128+
result[response_type] = (response, response_name)
129129
return result.items()
130130

131131

.generator/src/generator/templates/api.j2

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,8 @@ impl {{operation.operationId}}OptionalParams {
7272
#[derive(Debug, Clone, Serialize, Deserialize)]
7373
#[serde(untagged)]
7474
pub enum {{operation.operationId}}Error {
75-
{%- for responseType, (response, responseCodes) in responses_by_types(operation, version) %}
76-
{%- for responseCode in responseCodes %}
77-
Status{{responseCode|int}}({{responseType}}),
78-
{%- endfor %}
75+
{%- for responseType, (response, responseName) in responses_by_types(operation, version) %}
76+
{{responseName}}({{responseType}}),
7977
{%- endfor %}
8078
UnknownValue(serde_json::Value),
8179
}

src/datadogV1/api/api_authentication.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ use serde::{Deserialize, Serialize};
99
#[derive(Debug, Clone, Serialize, Deserialize)]
1010
#[serde(untagged)]
1111
pub enum ValidateError {
12-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
13-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
12+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
1413
UnknownValue(serde_json::Value),
1514
}
1615

src/datadogV1/api/api_aws_integration.rs

Lines changed: 12 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -78,121 +78,95 @@ impl UpdateAWSAccountOptionalParams {
7878
#[derive(Debug, Clone, Serialize, Deserialize)]
7979
#[serde(untagged)]
8080
pub enum CreateAWSAccountError {
81-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
82-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
83-
Status409(Option<crate::datadogV1::model::APIErrorResponse>),
84-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
81+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
8582
UnknownValue(serde_json::Value),
8683
}
8784

8885
/// CreateAWSEventBridgeSourceError is a struct for typed errors of method [`AWSIntegrationAPI::create_aws_event_bridge_source`]
8986
#[derive(Debug, Clone, Serialize, Deserialize)]
9087
#[serde(untagged)]
9188
pub enum CreateAWSEventBridgeSourceError {
92-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
93-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
94-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
89+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
9590
UnknownValue(serde_json::Value),
9691
}
9792

9893
/// CreateAWSTagFilterError is a struct for typed errors of method [`AWSIntegrationAPI::create_aws_tag_filter`]
9994
#[derive(Debug, Clone, Serialize, Deserialize)]
10095
#[serde(untagged)]
10196
pub enum CreateAWSTagFilterError {
102-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
103-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
104-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
97+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
10598
UnknownValue(serde_json::Value),
10699
}
107100

108101
/// CreateNewAWSExternalIDError is a struct for typed errors of method [`AWSIntegrationAPI::create_new_aws_external_id`]
109102
#[derive(Debug, Clone, Serialize, Deserialize)]
110103
#[serde(untagged)]
111104
pub enum CreateNewAWSExternalIDError {
112-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
113-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
114-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
105+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
115106
UnknownValue(serde_json::Value),
116107
}
117108

118109
/// DeleteAWSAccountError is a struct for typed errors of method [`AWSIntegrationAPI::delete_aws_account`]
119110
#[derive(Debug, Clone, Serialize, Deserialize)]
120111
#[serde(untagged)]
121112
pub enum DeleteAWSAccountError {
122-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
123-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
124-
Status409(Option<crate::datadogV1::model::APIErrorResponse>),
125-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
113+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
126114
UnknownValue(serde_json::Value),
127115
}
128116

129117
/// DeleteAWSEventBridgeSourceError is a struct for typed errors of method [`AWSIntegrationAPI::delete_aws_event_bridge_source`]
130118
#[derive(Debug, Clone, Serialize, Deserialize)]
131119
#[serde(untagged)]
132120
pub enum DeleteAWSEventBridgeSourceError {
133-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
134-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
135-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
121+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
136122
UnknownValue(serde_json::Value),
137123
}
138124

139125
/// DeleteAWSTagFilterError is a struct for typed errors of method [`AWSIntegrationAPI::delete_aws_tag_filter`]
140126
#[derive(Debug, Clone, Serialize, Deserialize)]
141127
#[serde(untagged)]
142128
pub enum DeleteAWSTagFilterError {
143-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
144-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
145-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
129+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
146130
UnknownValue(serde_json::Value),
147131
}
148132

149133
/// ListAWSAccountsError is a struct for typed errors of method [`AWSIntegrationAPI::list_aws_accounts`]
150134
#[derive(Debug, Clone, Serialize, Deserialize)]
151135
#[serde(untagged)]
152136
pub enum ListAWSAccountsError {
153-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
154-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
155-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
137+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
156138
UnknownValue(serde_json::Value),
157139
}
158140

159141
/// ListAWSEventBridgeSourcesError is a struct for typed errors of method [`AWSIntegrationAPI::list_aws_event_bridge_sources`]
160142
#[derive(Debug, Clone, Serialize, Deserialize)]
161143
#[serde(untagged)]
162144
pub enum ListAWSEventBridgeSourcesError {
163-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
164-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
165-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
145+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
166146
UnknownValue(serde_json::Value),
167147
}
168148

169149
/// ListAWSTagFiltersError is a struct for typed errors of method [`AWSIntegrationAPI::list_aws_tag_filters`]
170150
#[derive(Debug, Clone, Serialize, Deserialize)]
171151
#[serde(untagged)]
172152
pub enum ListAWSTagFiltersError {
173-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
174-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
175-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
153+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
176154
UnknownValue(serde_json::Value),
177155
}
178156

179157
/// ListAvailableAWSNamespacesError is a struct for typed errors of method [`AWSIntegrationAPI::list_available_aws_namespaces`]
180158
#[derive(Debug, Clone, Serialize, Deserialize)]
181159
#[serde(untagged)]
182160
pub enum ListAvailableAWSNamespacesError {
183-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
184-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
161+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
185162
UnknownValue(serde_json::Value),
186163
}
187164

188165
/// UpdateAWSAccountError is a struct for typed errors of method [`AWSIntegrationAPI::update_aws_account`]
189166
#[derive(Debug, Clone, Serialize, Deserialize)]
190167
#[serde(untagged)]
191168
pub enum UpdateAWSAccountError {
192-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
193-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
194-
Status409(Option<crate::datadogV1::model::APIErrorResponse>),
195-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
169+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
196170
UnknownValue(serde_json::Value),
197171
}
198172

src/datadogV1/api/api_aws_logs_integration.rs

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,68 +14,55 @@ use std::io::Write;
1414
#[derive(Debug, Clone, Serialize, Deserialize)]
1515
#[serde(untagged)]
1616
pub enum CheckAWSLogsLambdaAsyncError {
17-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
18-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
19-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
17+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
2018
UnknownValue(serde_json::Value),
2119
}
2220

2321
/// CheckAWSLogsServicesAsyncError is a struct for typed errors of method [`AWSLogsIntegrationAPI::check_aws_logs_services_async`]
2422
#[derive(Debug, Clone, Serialize, Deserialize)]
2523
#[serde(untagged)]
2624
pub enum CheckAWSLogsServicesAsyncError {
27-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
28-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
29-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
25+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
3026
UnknownValue(serde_json::Value),
3127
}
3228

3329
/// CreateAWSLambdaARNError is a struct for typed errors of method [`AWSLogsIntegrationAPI::create_aws_lambda_arn`]
3430
#[derive(Debug, Clone, Serialize, Deserialize)]
3531
#[serde(untagged)]
3632
pub enum CreateAWSLambdaARNError {
37-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
38-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
39-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
33+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
4034
UnknownValue(serde_json::Value),
4135
}
4236

4337
/// DeleteAWSLambdaARNError is a struct for typed errors of method [`AWSLogsIntegrationAPI::delete_aws_lambda_arn`]
4438
#[derive(Debug, Clone, Serialize, Deserialize)]
4539
#[serde(untagged)]
4640
pub enum DeleteAWSLambdaARNError {
47-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
48-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
49-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
41+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
5042
UnknownValue(serde_json::Value),
5143
}
5244

5345
/// EnableAWSLogServicesError is a struct for typed errors of method [`AWSLogsIntegrationAPI::enable_aws_log_services`]
5446
#[derive(Debug, Clone, Serialize, Deserialize)]
5547
#[serde(untagged)]
5648
pub enum EnableAWSLogServicesError {
57-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
58-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
59-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
49+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
6050
UnknownValue(serde_json::Value),
6151
}
6252

6353
/// ListAWSLogsIntegrationsError is a struct for typed errors of method [`AWSLogsIntegrationAPI::list_aws_logs_integrations`]
6454
#[derive(Debug, Clone, Serialize, Deserialize)]
6555
#[serde(untagged)]
6656
pub enum ListAWSLogsIntegrationsError {
67-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
68-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
69-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
57+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
7058
UnknownValue(serde_json::Value),
7159
}
7260

7361
/// ListAWSLogsServicesError is a struct for typed errors of method [`AWSLogsIntegrationAPI::list_aws_logs_services`]
7462
#[derive(Debug, Clone, Serialize, Deserialize)]
7563
#[serde(untagged)]
7664
pub enum ListAWSLogsServicesError {
77-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
78-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
65+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
7966
UnknownValue(serde_json::Value),
8067
}
8168

src/datadogV1/api/api_azure_integration.rs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,39 @@ use std::io::Write;
1414
#[derive(Debug, Clone, Serialize, Deserialize)]
1515
#[serde(untagged)]
1616
pub enum CreateAzureIntegrationError {
17-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
18-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
19-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
17+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
2018
UnknownValue(serde_json::Value),
2119
}
2220

2321
/// DeleteAzureIntegrationError is a struct for typed errors of method [`AzureIntegrationAPI::delete_azure_integration`]
2422
#[derive(Debug, Clone, Serialize, Deserialize)]
2523
#[serde(untagged)]
2624
pub enum DeleteAzureIntegrationError {
27-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
28-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
29-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
25+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
3026
UnknownValue(serde_json::Value),
3127
}
3228

3329
/// ListAzureIntegrationError is a struct for typed errors of method [`AzureIntegrationAPI::list_azure_integration`]
3430
#[derive(Debug, Clone, Serialize, Deserialize)]
3531
#[serde(untagged)]
3632
pub enum ListAzureIntegrationError {
37-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
38-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
39-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
33+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
4034
UnknownValue(serde_json::Value),
4135
}
4236

4337
/// UpdateAzureHostFiltersError is a struct for typed errors of method [`AzureIntegrationAPI::update_azure_host_filters`]
4438
#[derive(Debug, Clone, Serialize, Deserialize)]
4539
#[serde(untagged)]
4640
pub enum UpdateAzureHostFiltersError {
47-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
48-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
49-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
41+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
5042
UnknownValue(serde_json::Value),
5143
}
5244

5345
/// UpdateAzureIntegrationError is a struct for typed errors of method [`AzureIntegrationAPI::update_azure_integration`]
5446
#[derive(Debug, Clone, Serialize, Deserialize)]
5547
#[serde(untagged)]
5648
pub enum UpdateAzureIntegrationError {
57-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
58-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
59-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
49+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
6050
UnknownValue(serde_json::Value),
6151
}
6252

src/datadogV1/api/api_dashboard_lists.rs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,39 @@ use std::io::Write;
1414
#[derive(Debug, Clone, Serialize, Deserialize)]
1515
#[serde(untagged)]
1616
pub enum CreateDashboardListError {
17-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
18-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
19-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
17+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
2018
UnknownValue(serde_json::Value),
2119
}
2220

2321
/// DeleteDashboardListError is a struct for typed errors of method [`DashboardListsAPI::delete_dashboard_list`]
2422
#[derive(Debug, Clone, Serialize, Deserialize)]
2523
#[serde(untagged)]
2624
pub enum DeleteDashboardListError {
27-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
28-
Status404(Option<crate::datadogV1::model::APIErrorResponse>),
29-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
25+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
3026
UnknownValue(serde_json::Value),
3127
}
3228

3329
/// GetDashboardListError is a struct for typed errors of method [`DashboardListsAPI::get_dashboard_list`]
3430
#[derive(Debug, Clone, Serialize, Deserialize)]
3531
#[serde(untagged)]
3632
pub enum GetDashboardListError {
37-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
38-
Status404(Option<crate::datadogV1::model::APIErrorResponse>),
39-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
33+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
4034
UnknownValue(serde_json::Value),
4135
}
4236

4337
/// ListDashboardListsError is a struct for typed errors of method [`DashboardListsAPI::list_dashboard_lists`]
4438
#[derive(Debug, Clone, Serialize, Deserialize)]
4539
#[serde(untagged)]
4640
pub enum ListDashboardListsError {
47-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
48-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
41+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
4942
UnknownValue(serde_json::Value),
5043
}
5144

5245
/// UpdateDashboardListError is a struct for typed errors of method [`DashboardListsAPI::update_dashboard_list`]
5346
#[derive(Debug, Clone, Serialize, Deserialize)]
5447
#[serde(untagged)]
5548
pub enum UpdateDashboardListError {
56-
Status400(Option<crate::datadogV1::model::APIErrorResponse>),
57-
Status403(Option<crate::datadogV1::model::APIErrorResponse>),
58-
Status404(Option<crate::datadogV1::model::APIErrorResponse>),
59-
Status429(Option<crate::datadogV1::model::APIErrorResponse>),
49+
APIErrorResponse(crate::datadogV1::model::APIErrorResponse),
6050
UnknownValue(serde_json::Value),
6151
}
6252

0 commit comments

Comments
 (0)