Skip to content

Commit 0a71402

Browse files
Fix swift5 binary upload (#17422)
1 parent 3099a2f commit 0a71402

73 files changed

Lines changed: 274 additions & 165 deletions

File tree

Some content is hidden

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

modules/openapi-generator/src/main/resources/swift5/api.mustache

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,12 @@ extension {{projectName}}API {
406406
localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
407407
let localVariableURLString = {{projectName}}API.basePath + localVariablePath
408408
{{#bodyParam}}
409+
{{#isBinary}}
410+
let localVariableParameters = ["body": {{paramName}}]
411+
{{/isBinary}}
412+
{{^isBinary}}
409413
let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}})
414+
{{/isBinary}}
410415
{{/bodyParam}}
411416
{{^bodyParam}}
412417
{{#hasFormParams}}
@@ -431,9 +436,10 @@ extension {{projectName}}API {
431436
]){{/hasQueryParams}}{{^hasQueryParams}}
432437
let localVariableUrlComponents = URLComponents(string: localVariableURLString){{/hasQueryParams}}
433438

434-
let localVariableNillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}}
435-
:{{/hasFormParams}}{{/headerParams}}{{#hasFormParams}}
436-
"Content-Type": {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasFormParams}}{{#headerParams}}
439+
let localVariableNillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}}{{^hasConsumes}}
440+
:{{/hasConsumes}}{{/hasFormParams}}{{/headerParams}}{{#hasFormParams}}
441+
"Content-Type": {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasFormParams}}{{^hasFormParams}}{{#hasConsumes}}
442+
"Content-Type": {{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasConsumes}}{{/hasFormParams}}{{#headerParams}}
437443
{{> _param}},{{/headerParams}}
438444
]
439445

modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -592,14 +592,20 @@ private class OctetStreamEncoding: ParameterEncoding {
592592
593593
var urlRequest = urlRequest
594594
595-
var requestBodyComponents = URLComponents()
596-
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
595+
guard let body = parameters?["body"] else { return urlRequest }
597596

598597
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
599598
urlRequest.setValue("application/octet-stream", forHTTPHeaderField: "Content-Type")
600599
}
601600

602-
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
601+
switch body {
602+
case let fileURL as URL:
603+
urlRequest.httpBody = try Data(contentsOf: fileURL)
604+
case let data as Data:
605+
urlRequest.httpBody = data
606+
default:
607+
fatalError("Unprocessable body \(body)")
608+
}
603609

604610
return urlRequest
605611
}

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ open class AnotherFakeAPI {
4646
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
4747

4848
let localVariableNillableHeaders: [String: Any?] = [
49-
:
49+
"Content-Type": "application/json",
5050
]
5151

5252
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ open class FakeAPI {
212212
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
213213

214214
let localVariableNillableHeaders: [String: Any?] = [
215-
:
215+
"Content-Type": "application/json",
216216
]
217217

218218
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -258,7 +258,7 @@ open class FakeAPI {
258258
])
259259

260260
let localVariableNillableHeaders: [String: Any?] = [
261-
:
261+
"Content-Type": "application/json",
262262
]
263263

264264
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -302,7 +302,7 @@ open class FakeAPI {
302302
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
303303

304304
let localVariableNillableHeaders: [String: Any?] = [
305-
:
305+
"Content-Type": "application/json",
306306
]
307307

308308
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -636,7 +636,7 @@ open class FakeAPI {
636636
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
637637

638638
let localVariableNillableHeaders: [String: Any?] = [
639-
:
639+
"Content-Type": "application/json",
640640
]
641641

642642
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ open class FakeClassnameTags123API {
4949
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
5050

5151
let localVariableNillableHeaders: [String: Any?] = [
52-
:
52+
"Content-Type": "application/json",
5353
]
5454

5555
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ open class PetAPI {
5151
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
5252

5353
let localVariableNillableHeaders: [String: Any?] = [
54-
:
54+
"Content-Type": "application/json",
5555
]
5656

5757
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -309,7 +309,7 @@ open class PetAPI {
309309
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
310310

311311
let localVariableNillableHeaders: [String: Any?] = [
312-
:
312+
"Content-Type": "application/json",
313313
]
314314

315315
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

samples/client/petstore/swift5/anycodableLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -592,14 +592,20 @@ private class OctetStreamEncoding: ParameterEncoding {
592592

593593
var urlRequest = urlRequest
594594

595-
var requestBodyComponents = URLComponents()
596-
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
595+
guard let body = parameters?["body"] else { return urlRequest }
597596

598597
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
599598
urlRequest.setValue("application/octet-stream", forHTTPHeaderField: "Content-Type")
600599
}
601600

602-
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
601+
switch body {
602+
case let fileURL as URL:
603+
urlRequest.httpBody = try Data(contentsOf: fileURL)
604+
case let data as Data:
605+
urlRequest.httpBody = data
606+
default:
607+
fatalError("Unprocessable body \(body)")
608+
}
603609

604610
return urlRequest
605611
}

samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ open class AnotherFakeAPI {
3838
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
3939

4040
let localVariableNillableHeaders: [String: Any?] = [
41-
:
41+
"Content-Type": "application/json",
4242
]
4343

4444
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ open class FakeAPI {
172172
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
173173

174174
let localVariableNillableHeaders: [String: Any?] = [
175-
:
175+
"Content-Type": "application/json",
176176
]
177177

178178
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -210,7 +210,7 @@ open class FakeAPI {
210210
])
211211

212212
let localVariableNillableHeaders: [String: Any?] = [
213-
:
213+
"Content-Type": "application/json",
214214
]
215215

216216
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -246,7 +246,7 @@ open class FakeAPI {
246246
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
247247

248248
let localVariableNillableHeaders: [String: Any?] = [
249-
:
249+
"Content-Type": "application/json",
250250
]
251251

252252
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
@@ -548,7 +548,7 @@ open class FakeAPI {
548548
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
549549

550550
let localVariableNillableHeaders: [String: Any?] = [
551-
:
551+
"Content-Type": "application/json",
552552
]
553553

554554
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ open class FakeClassnameTags123API {
4141
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
4242

4343
let localVariableNillableHeaders: [String: Any?] = [
44-
:
44+
"Content-Type": "application/json",
4545
]
4646

4747
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)

0 commit comments

Comments
 (0)