Skip to content

Commit e81f70f

Browse files
authored
Converter SPI methods for required fields should return non-optional types (#20)
### Motivation `getRequiredRequestBodyAsText` currently returns `C?` instead of `C`. As the value should be required an optional in the return is causing issues. The errors are `Cannot convert value of type 'C?' to specified type` and `Cannot infer contextual base in reference to member 'text'` ### Modifications Change the return type of `getRequiredRequestBodyAsText` ### Result Code using a required requestBody now compiles without errors.
1 parent bec8d38 commit e81f70f

File tree

5 files changed

+35
-35
lines changed

5 files changed

+35
-35
lines changed

Sources/OpenAPIRuntime/Conversion/Converter+Common.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ extension Converter {
163163
in headerFields: [HeaderField],
164164
name: String,
165165
as type: [T].Type
166-
) throws -> [T]? {
166+
) throws -> [T] {
167167
try getRequiredHeaderFields(
168168
in: headerFields,
169169
name: name,
@@ -219,7 +219,7 @@ extension Converter {
219219
in headerFields: [HeaderField],
220220
name: String,
221221
as type: [Date].Type
222-
) throws -> [Date]? {
222+
) throws -> [Date] {
223223
try getRequiredHeaderFields(
224224
in: headerFields,
225225
name: name,

Sources/OpenAPIRuntime/Conversion/Converter+Server.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public extension Converter {
202202
_ type: T.Type,
203203
from data: Data?,
204204
transforming transform: (T) -> C
205-
) throws -> C? {
205+
) throws -> C {
206206
try getRequiredRequestBody(
207207
type,
208208
from: data,

Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Client.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ final class Test_ClientConverterExtensions: Test_Runtime {
283283

284284
// | client | get | response body | text | string-convertible | required | getResponseBodyAsText |
285285
func test_getResponseBodyAsText_stringConvertible() throws {
286-
let value = try converter.getResponseBodyAsText(
286+
let value: String = try converter.getResponseBodyAsText(
287287
String.self,
288288
from: testStringData,
289289
transforming: { $0 }
@@ -293,7 +293,7 @@ final class Test_ClientConverterExtensions: Test_Runtime {
293293

294294
// | client | get | response body | text | date | required | getResponseBodyAsText |
295295
func test_getResponseBodyAsText_date() throws {
296-
let value = try converter.getResponseBodyAsText(
296+
let value: Date = try converter.getResponseBodyAsText(
297297
Date.self,
298298
from: testDateStringData,
299299
transforming: { $0 }
@@ -303,7 +303,7 @@ final class Test_ClientConverterExtensions: Test_Runtime {
303303

304304
// | client | get | response body | JSON | codable | required | getResponseBodyAsJSON |
305305
func test_getResponseBodyAsJSON_codable() throws {
306-
let value = try converter.getResponseBodyAsJSON(
306+
let value: TestPet = try converter.getResponseBodyAsJSON(
307307
TestPet.self,
308308
from: testStructData,
309309
transforming: { $0 }
@@ -313,7 +313,7 @@ final class Test_ClientConverterExtensions: Test_Runtime {
313313

314314
// | client | get | response body | binary | data | required | getResponseBodyAsBinary |
315315
func test_getResponseBodyAsBinary_data() throws {
316-
let value = try converter.getResponseBodyAsBinary(
316+
let value: Data = try converter.getResponseBodyAsBinary(
317317
Data.self,
318318
from: testStringData,
319319
transforming: { $0 }

Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Common.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
179179
let headerFields: [HeaderField] = [
180180
.init(name: "foo", value: "bar")
181181
]
182-
let value = try converter.getOptionalHeaderFieldAsText(
182+
let value: String? = try converter.getOptionalHeaderFieldAsText(
183183
in: headerFields,
184184
name: "foo",
185185
as: String.self
@@ -192,7 +192,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
192192
let headerFields: [HeaderField] = [
193193
.init(name: "foo", value: "bar")
194194
]
195-
let value = try converter.getRequiredHeaderFieldAsText(
195+
let value: String = try converter.getRequiredHeaderFieldAsText(
196196
in: headerFields,
197197
name: "foo",
198198
as: String.self
@@ -206,7 +206,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
206206
.init(name: "foo", value: "bar"),
207207
.init(name: "foo", value: "baz"),
208208
]
209-
let value = try converter.getOptionalHeaderFieldAsText(
209+
let value: [String]? = try converter.getOptionalHeaderFieldAsText(
210210
in: headerFields,
211211
name: "foo",
212212
as: [String].self
@@ -220,7 +220,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
220220
.init(name: "foo", value: "bar"),
221221
.init(name: "foo", value: "baz"),
222222
]
223-
let value = try converter.getRequiredHeaderFieldAsText(
223+
let value: [String] = try converter.getRequiredHeaderFieldAsText(
224224
in: headerFields,
225225
name: "foo",
226226
as: [String].self
@@ -233,7 +233,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
233233
let headerFields: [HeaderField] = [
234234
.init(name: "foo", value: testDateString)
235235
]
236-
let value = try converter.getOptionalHeaderFieldAsText(
236+
let value: Date? = try converter.getOptionalHeaderFieldAsText(
237237
in: headerFields,
238238
name: "foo",
239239
as: Date.self
@@ -246,7 +246,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
246246
let headerFields: [HeaderField] = [
247247
.init(name: "foo", value: testDateString)
248248
]
249-
let value = try converter.getRequiredHeaderFieldAsText(
249+
let value: Date = try converter.getRequiredHeaderFieldAsText(
250250
in: headerFields,
251251
name: "foo",
252252
as: Date.self
@@ -260,7 +260,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
260260
.init(name: "foo", value: testDateString),
261261
.init(name: "foo", value: testDateString),
262262
]
263-
let value = try converter.getOptionalHeaderFieldAsText(
263+
let value: [Date]? = try converter.getOptionalHeaderFieldAsText(
264264
in: headerFields,
265265
name: "foo",
266266
as: [Date].self
@@ -274,7 +274,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
274274
.init(name: "foo", value: testDateString),
275275
.init(name: "foo", value: testDateString),
276276
]
277-
let value = try converter.getRequiredHeaderFieldAsText(
277+
let value: [Date] = try converter.getRequiredHeaderFieldAsText(
278278
in: headerFields,
279279
name: "foo",
280280
as: [Date].self
@@ -287,7 +287,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
287287
let headerFields: [HeaderField] = [
288288
.init(name: "foo", value: testStructString)
289289
]
290-
let value = try converter.getOptionalHeaderFieldAsJSON(
290+
let value: TestPet? = try converter.getOptionalHeaderFieldAsJSON(
291291
in: headerFields,
292292
name: "foo",
293293
as: TestPet.self
@@ -300,7 +300,7 @@ final class Test_CommonConverterExtensions: Test_Runtime {
300300
let headerFields: [HeaderField] = [
301301
.init(name: "foo", value: testStructString)
302302
]
303-
let value = try converter.getRequiredHeaderFieldAsJSON(
303+
let value: TestPet = try converter.getRequiredHeaderFieldAsJSON(
304304
in: headerFields,
305305
name: "foo",
306306
as: TestPet.self

Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Server.swift

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
108108
let path: [String: String] = [
109109
"foo": "bar"
110110
]
111-
let value = try converter.getPathParameterAsText(
111+
let value: String = try converter.getPathParameterAsText(
112112
in: path,
113113
name: "foo",
114114
as: String.self
@@ -121,7 +121,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
121121
let query: [URLQueryItem] = [
122122
.init(name: "search", value: "foo")
123123
]
124-
let value = try converter.getOptionalQueryItemAsText(
124+
let value: String? = try converter.getOptionalQueryItemAsText(
125125
in: query,
126126
name: "search",
127127
as: String.self
@@ -134,7 +134,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
134134
let query: [URLQueryItem] = [
135135
.init(name: "search", value: "foo")
136136
]
137-
let value = try converter.getRequiredQueryItemAsText(
137+
let value: String = try converter.getRequiredQueryItemAsText(
138138
in: query,
139139
name: "search",
140140
as: String.self
@@ -148,7 +148,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
148148
.init(name: "search", value: "foo"),
149149
.init(name: "search", value: "bar"),
150150
]
151-
let value = try converter.getOptionalQueryItemAsText(
151+
let value: [String]? = try converter.getOptionalQueryItemAsText(
152152
in: query,
153153
name: "search",
154154
as: [String].self
@@ -162,7 +162,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
162162
.init(name: "search", value: "foo"),
163163
.init(name: "search", value: "bar"),
164164
]
165-
let value = try converter.getRequiredQueryItemAsText(
165+
let value: [String] = try converter.getRequiredQueryItemAsText(
166166
in: query,
167167
name: "search",
168168
as: [String].self
@@ -175,7 +175,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
175175
let query: [URLQueryItem] = [
176176
.init(name: "search", value: testDateString)
177177
]
178-
let value = try converter.getOptionalQueryItemAsText(
178+
let value: Date? = try converter.getOptionalQueryItemAsText(
179179
in: query,
180180
name: "search",
181181
as: Date.self
@@ -188,7 +188,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
188188
let query: [URLQueryItem] = [
189189
.init(name: "search", value: testDateString)
190190
]
191-
let value = try converter.getRequiredQueryItemAsText(
191+
let value: Date = try converter.getRequiredQueryItemAsText(
192192
in: query,
193193
name: "search",
194194
as: Date.self
@@ -202,7 +202,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
202202
.init(name: "search", value: testDateString),
203203
.init(name: "search", value: testDateString),
204204
]
205-
let value = try converter.getOptionalQueryItemAsText(
205+
let value: [Date]? = try converter.getOptionalQueryItemAsText(
206206
in: query,
207207
name: "search",
208208
as: [Date].self
@@ -216,7 +216,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
216216
.init(name: "search", value: testDateString),
217217
.init(name: "search", value: testDateString),
218218
]
219-
let value = try converter.getRequiredQueryItemAsText(
219+
let value: [Date] = try converter.getRequiredQueryItemAsText(
220220
in: query,
221221
name: "search",
222222
as: [Date].self
@@ -226,7 +226,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
226226

227227
// | server | get | request body | text | string-convertible | optional | getOptionalRequestBodyAsText |
228228
func test_getOptionalRequestBodyAsText_stringConvertible() throws {
229-
let body = try converter.getOptionalRequestBodyAsText(
229+
let body: String? = try converter.getOptionalRequestBodyAsText(
230230
String.self,
231231
from: testStringData,
232232
transforming: { $0 }
@@ -236,7 +236,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
236236

237237
// | server | get | request body | text | string-convertible | required | getRequiredRequestBodyAsText |
238238
func test_getRequiredRequestBodyAsText_stringConvertible() throws {
239-
let body = try converter.getRequiredRequestBodyAsText(
239+
let body: String = try converter.getRequiredRequestBodyAsText(
240240
String.self,
241241
from: testStringData,
242242
transforming: { $0 }
@@ -246,7 +246,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
246246

247247
// | server | get | request body | text | date | optional | getOptionalRequestBodyAsText |
248248
func test_getOptionalRequestBodyAsText_date() throws {
249-
let body = try converter.getOptionalRequestBodyAsText(
249+
let body: Date? = try converter.getOptionalRequestBodyAsText(
250250
Date.self,
251251
from: testDateStringData,
252252
transforming: { $0 }
@@ -256,7 +256,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
256256

257257
// | server | get | request body | text | date | required | getRequiredRequestBodyAsText |
258258
func test_getRequiredRequestBodyAsText_date() throws {
259-
let body = try converter.getRequiredRequestBodyAsText(
259+
let body: Date = try converter.getRequiredRequestBodyAsText(
260260
Date.self,
261261
from: testDateStringData,
262262
transforming: { $0 }
@@ -266,7 +266,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
266266

267267
// | server | get | request body | JSON | codable | optional | getOptionalRequestBodyAsJSON |
268268
func test_getOptionalRequestBodyAsJSON_codable() throws {
269-
let body = try converter.getOptionalRequestBodyAsJSON(
269+
let body: TestPet? = try converter.getOptionalRequestBodyAsJSON(
270270
TestPet.self,
271271
from: testStructData,
272272
transforming: { $0 }
@@ -275,7 +275,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
275275
}
276276

277277
func test_getOptionalRequestBodyAsJSON_codable_string() throws {
278-
let body = try converter.getOptionalRequestBodyAsJSON(
278+
let body: String? = try converter.getOptionalRequestBodyAsJSON(
279279
String.self,
280280
from: testQuotedStringData,
281281
transforming: { $0 }
@@ -285,7 +285,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
285285

286286
// | server | get | request body | JSON | codable | required | getRequiredRequestBodyAsJSON |
287287
func test_getRequiredRequestBodyAsJSON_codable() throws {
288-
let body = try converter.getRequiredRequestBodyAsJSON(
288+
let body: TestPet = try converter.getRequiredRequestBodyAsJSON(
289289
TestPet.self,
290290
from: testStructData,
291291
transforming: { $0 }
@@ -295,7 +295,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
295295

296296
// | server | get | request body | binary | data | optional | getOptionalRequestBodyAsBinary |
297297
func test_getOptionalRequestBodyAsBinary_data() throws {
298-
let body = try converter.getOptionalRequestBodyAsBinary(
298+
let body: Data? = try converter.getOptionalRequestBodyAsBinary(
299299
Data.self,
300300
from: testStringData,
301301
transforming: { $0 }
@@ -305,7 +305,7 @@ final class Test_ServerConverterExtensions: Test_Runtime {
305305

306306
// | server | get | request body | binary | data | required | getRequiredRequestBodyAsBinary |
307307
func test_getRequiredRequestBodyAsBinary_data() throws {
308-
let body = try converter.getRequiredRequestBodyAsBinary(
308+
let body: Data = try converter.getRequiredRequestBodyAsBinary(
309309
Data.self,
310310
from: testStringData,
311311
transforming: { $0 }

0 commit comments

Comments
 (0)