Skip to content

Commit 66cde8b

Browse files
authored
[swift6] make async await the default response library (#19776)
* [swift6] make async await the default response library * [swift6] make async await the default response library * [swift6] make async await the default response library
1 parent cfe6520 commit 66cde8b

File tree

39 files changed

+1106
-715
lines changed

39 files changed

+1106
-715
lines changed

bin/configs/swift6-alamofireLibrary.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ templateDir: modules/openapi-generator/src/main/resources/swift6
66
generateAliasAsModel: true
77
useCustomDateWithoutTime: true
88
additionalProperties:
9+
responseAs: ObjcBlock
910
podAuthors: ""
1011
podSummary: PetstoreClient
1112
projectName: PetstoreClient

bin/configs/swift6-api-non-static-method.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ library: alamofire
44
inputSpec: modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml
55
templateDir: modules/openapi-generator/src/main/resources/swift6
66
additionalProperties:
7-
responseAs: AsyncAwait,Combine,Result,PromiseKit,RxSwift
7+
responseAs: AsyncAwait,Combine,Result,PromiseKit,RxSwift,ObjcBlock
88
apiStaticMethod: false
99
podAuthors: ""
1010
podSummary: PetstoreClient

bin/configs/swift6-objcCompatible.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-
44
templateDir: modules/openapi-generator/src/main/resources/swift6
55
generateAliasAsModel: true
66
additionalProperties:
7+
responseAs: ObjcBlock
78
podAuthors: ""
89
podSummary: PetstoreClient
910
objcCompatible: true

bin/configs/swift6-oneOf.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/oneOf.yaml
44
templateDir: modules/openapi-generator/src/main/resources/swift6
55
generateAliasAsModel: true
66
additionalProperties:
7+
responseAs: ObjcBlock
78
useSPMFileStructure: false
89
podAuthors: ""
910
podSummary: PetstoreClient

bin/configs/swift6-urlsessionLibrary.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-
55
templateDir: modules/openapi-generator/src/main/resources/swift6
66
generateAliasAsModel: true
77
additionalProperties:
8+
responseAs: ObjcBlock
89
podAuthors: ""
910
podSummary: PetstoreClient
1011
projectName: PetstoreClient

docs/generators/swift6.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
4747
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
4848
|projectName|Project name in Xcode| |null|
4949
|readonlyProperties|Make properties readonly (default: false)| |null|
50-
|responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result, Combine, AsyncAwait are available.| |null|
50+
|responseAs|Optionally use libraries to manage response. Currently AsyncAwait, Combine, Result, RxSwift, ObjcBlock, PromiseKit are available.| |null|
5151
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
5252
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
5353
|swiftPackagePath|Set a custom source path instead of Sources/{{projectName}}.| |null|

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ public class Swift6ClientCodegen extends DefaultCodegen implements CodegenConfig
8585
protected static final String RESPONSE_LIBRARY_RESULT = "Result";
8686
protected static final String RESPONSE_LIBRARY_COMBINE = "Combine";
8787
protected static final String RESPONSE_LIBRARY_ASYNC_AWAIT = "AsyncAwait";
88-
protected static final String[] RESPONSE_LIBRARIES = { RESPONSE_LIBRARY_PROMISE_KIT, RESPONSE_LIBRARY_RX_SWIFT,
89-
RESPONSE_LIBRARY_RESULT, RESPONSE_LIBRARY_COMBINE, RESPONSE_LIBRARY_ASYNC_AWAIT };
88+
protected static final String RESPONSE_LIBRARY_OBJC_BLOCK = "ObjcBlock";
89+
protected static final String[] RESPONSE_LIBRARIES = { RESPONSE_LIBRARY_ASYNC_AWAIT, RESPONSE_LIBRARY_COMBINE, RESPONSE_LIBRARY_RESULT, RESPONSE_LIBRARY_RX_SWIFT, RESPONSE_LIBRARY_OBJC_BLOCK, RESPONSE_LIBRARY_PROMISE_KIT };
9090
@Setter
9191
protected String projectName = "OpenAPIClient";
9292
@Setter
@@ -125,7 +125,7 @@ public class Swift6ClientCodegen extends DefaultCodegen implements CodegenConfig
125125
@Setter
126126
protected boolean combineDeferred = true;
127127
@Setter
128-
protected String[] responseAs = new String[0];
128+
protected String[] responseAs = { RESPONSE_LIBRARY_ASYNC_AWAIT };
129129
protected String sourceFolder = swiftPackagePath;
130130
protected HashSet objcReservedWords;
131131
protected String apiDocPath = "docs/";
@@ -503,6 +503,9 @@ public void processOpts() {
503503
if (ArrayUtils.contains(responseAs, RESPONSE_LIBRARY_ASYNC_AWAIT)) {
504504
additionalProperties.put("useAsyncAwait", true);
505505
}
506+
if (ArrayUtils.contains(responseAs, RESPONSE_LIBRARY_OBJC_BLOCK)) {
507+
additionalProperties.put("useObjcBlock", true);
508+
}
506509

507510
// Setup readonlyProperties option, which declares properties so they can only
508511
// be set at initialization

modules/openapi-generator/src/main/resources/swift6/Models.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ extension NullEncodable: Codable where Wrapped: Codable {
127127
}
128128
}{{/useAlamofire}}
129129

130-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} final class RequestTask{{#useAsyncAwait}}: @unchecked Sendable{{/useAsyncAwait}} {
130+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} final class RequestTask: @unchecked Sendable {
131131
private let lock = NSRecursiveLock()
132132
{{#useAlamofire}}
133133
private var request: Request?

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

Lines changed: 83 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,7 @@ extension {{projectName}}API {
5353
{{/isEnum}}
5454
{{/allParams}}
5555
{{^useVapor}}
56-
{{^usePromiseKit}}
57-
{{^useRxSwift}}
58-
{{^useResult}}
59-
{{^useCombine}}
60-
{{^useAsyncAwait}}
56+
{{#useObjcBlock}}
6157

6258
/**
6359
{{#summary}}
@@ -71,7 +67,7 @@ extension {{projectName}}API {
7167
@available(*, deprecated, message: "This operation is deprecated.")
7268
{{/isDeprecated}}
7369
@discardableResult
74-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}[{{enumName}}_{{operationId}}]{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#apiStaticMethod}}{{#hasParams}}, {{/hasParams}}openAPIClient: OpenAPIClient = OpenAPIClient.shared{{/apiStaticMethod}}, completion: @Sendable @escaping (_ data: {{{returnType}}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void) -> RequestTask {
70+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}[{{enumName}}_{{operationId}}]{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}, {{/allParams}}{{#apiStaticMethod}}openAPIClient: OpenAPIClient = OpenAPIClient.shared, {{/apiStaticMethod}}completion: @Sendable @escaping (_ data: {{{returnType}}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void) -> RequestTask {
7571
return {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#apiStaticMethod}}{{#hasParams}}, {{/hasParams}}openAPIClient: openAPIClient{{/apiStaticMethod}}).execute { result in
7672
switch result {
7773
{{#returnType}}
@@ -87,12 +83,7 @@ extension {{projectName}}API {
8783
}
8884
}
8985
}
90-
{{/useAsyncAwait}}
91-
{{/useCombine}}
92-
{{/useResult}}
93-
{{/useRxSwift}}
94-
{{/usePromiseKit}}
95-
{{/useVapor}}
86+
{{/useObjcBlock}}
9687
{{#usePromiseKit}}
9788

9889
/**
@@ -257,6 +248,86 @@ extension {{projectName}}API {
257248
}
258249
}
259250
{{/useResult}}
251+
252+
/**
253+
{{#summary}}
254+
{{{.}}}
255+
{{/summary}}
256+
- {{httpMethod}} {{{path}}}{{#notes}}
257+
- {{{.}}}{{/notes}}{{#subresourceOperation}}
258+
- subresourceOperation: {{.}}{{/subresourceOperation}}{{#defaultResponse}}
259+
- defaultResponse: {{.}}{{/defaultResponse}}
260+
{{#authMethods}}
261+
- {{#isBasicBasic}}BASIC{{/isBasicBasic}}{{#isBasicBearer}}Bearer Token{{/isBasicBearer}}{{#isOAuth}}OAuth{{/isOAuth}}{{#isApiKey}}API Key{{/isApiKey}}:
262+
- type: {{type}}{{#keyParamName}} {{keyParamName}} {{#isKeyInQuery}}(QUERY){{/isKeyInQuery}}{{#isKeyInHeader}}(HEADER){{/isKeyInHeader}}{{/keyParamName}}
263+
- name: {{name}}
264+
{{/authMethods}}
265+
{{#hasResponseHeaders}}
266+
- responseHeaders: [{{#responseHeaders}}{{{baseName}}}({{{dataType}}}){{^-last}}, {{/-last}}{{/responseHeaders}}]
267+
{{/hasResponseHeaders}}
268+
{{#externalDocs}}
269+
- externalDocs: {{.}}
270+
{{/externalDocs}}
271+
{{#allParams}}
272+
- parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
273+
{{/allParams}}{{#apiStaticMethod}}
274+
- parameter openAPIClient: The OpenAPIClient that contains the configuration for the http request.{{/apiStaticMethod}}
275+
- returns: RequestBuilder<{{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{description}}
276+
*/
277+
{{#isDeprecated}}
278+
@available(*, deprecated, message: "This operation is deprecated.")
279+
{{/isDeprecated}}
280+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}[{{enumName}}_{{operationId}}]{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#apiStaticMethod}}{{#hasParams}}, {{/hasParams}}openAPIClient: OpenAPIClient = OpenAPIClient.shared{{/apiStaticMethod}}) -> RequestBuilder<{{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
281+
{{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} localVariablePath = "{{{path}}}"{{#pathParams}}
282+
let {{paramName}}PreEscape = "\({{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}APIHelper.mapValueToPathItem({{paramName}}){{/isEnum}})"
283+
let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
284+
localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
285+
let localVariableURLString = openAPIClient.basePath + localVariablePath
286+
{{#bodyParam}}
287+
{{#isBinary}}
288+
let localVariableParameters = ["body": {{paramName}}]
289+
{{/isBinary}}
290+
{{^isBinary}}
291+
let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}}, codableHelper: openAPIClient.codableHelper)
292+
{{/isBinary}}
293+
{{/bodyParam}}
294+
{{^bodyParam}}
295+
{{#hasFormParams}}
296+
let localVariableFormParams: [String: Any?] = [
297+
{{#formParams}}
298+
{{> _param}},
299+
{{/formParams}}
300+
]
301+
302+
let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams)
303+
let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters)
304+
{{/hasFormParams}}
305+
{{^hasFormParams}}
306+
let localVariableParameters: [String: Any]? = nil
307+
{{/hasFormParams}}
308+
{{/bodyParam}}{{#hasQueryParams}}
309+
var localVariableUrlComponents = URLComponents(string: localVariableURLString)
310+
localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([{{^queryParams}}:{{/queryParams}}
311+
{{#queryParams}}
312+
{{> _param}},
313+
{{/queryParams}}
314+
]){{/hasQueryParams}}{{^hasQueryParams}}
315+
let localVariableUrlComponents = URLComponents(string: localVariableURLString){{/hasQueryParams}}
316+
317+
let localVariableNillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}}{{^hasConsumes}}
318+
:{{/hasConsumes}}{{/hasFormParams}}{{/headerParams}}{{#hasFormParams}}
319+
"Content-Type": {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasFormParams}}{{^hasFormParams}}{{#hasConsumes}}
320+
"Content-Type": {{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasConsumes}}{{/hasFormParams}}{{#headerParams}}
321+
{{> _param}},{{/headerParams}}
322+
]
323+
324+
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
325+
326+
let localVariableRequestBuilder: RequestBuilder<{{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = openAPIClient.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}}
327+
328+
return localVariableRequestBuilder.init(method: "{{httpMethod}}", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters, requiresAuthentication: {{#hasAuthMethods}}true{{/hasAuthMethods}}{{^hasAuthMethods}}false{{/hasAuthMethods}}, openAPIClient: openAPIClient)
329+
}
330+
{{/useVapor}}
260331
{{#useVapor}}
261332

262333
/**
@@ -381,87 +452,6 @@ extension {{projectName}}API {
381452
}
382453
}
383454
{{/useVapor}}
384-
{{^useVapor}}
385-
386-
/**
387-
{{#summary}}
388-
{{{.}}}
389-
{{/summary}}
390-
- {{httpMethod}} {{{path}}}{{#notes}}
391-
- {{{.}}}{{/notes}}{{#subresourceOperation}}
392-
- subresourceOperation: {{.}}{{/subresourceOperation}}{{#defaultResponse}}
393-
- defaultResponse: {{.}}{{/defaultResponse}}
394-
{{#authMethods}}
395-
- {{#isBasicBasic}}BASIC{{/isBasicBasic}}{{#isBasicBearer}}Bearer Token{{/isBasicBearer}}{{#isOAuth}}OAuth{{/isOAuth}}{{#isApiKey}}API Key{{/isApiKey}}:
396-
- type: {{type}}{{#keyParamName}} {{keyParamName}} {{#isKeyInQuery}}(QUERY){{/isKeyInQuery}}{{#isKeyInHeader}}(HEADER){{/isKeyInHeader}}{{/keyParamName}}
397-
- name: {{name}}
398-
{{/authMethods}}
399-
{{#hasResponseHeaders}}
400-
- responseHeaders: [{{#responseHeaders}}{{{baseName}}}({{{dataType}}}){{^-last}}, {{/-last}}{{/responseHeaders}}]
401-
{{/hasResponseHeaders}}
402-
{{#externalDocs}}
403-
- externalDocs: {{.}}
404-
{{/externalDocs}}
405-
{{#allParams}}
406-
- parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
407-
{{/allParams}}{{#apiStaticMethod}}
408-
- parameter openAPIClient: The OpenAPIClient that contains the configuration for the http request.{{/apiStaticMethod}}
409-
- returns: RequestBuilder<{{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{description}}
410-
*/
411-
{{#isDeprecated}}
412-
@available(*, deprecated, message: "This operation is deprecated.")
413-
{{/isDeprecated}}
414-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}[{{enumName}}_{{operationId}}]{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#apiStaticMethod}}{{#hasParams}}, {{/hasParams}}openAPIClient: OpenAPIClient = OpenAPIClient.shared{{/apiStaticMethod}}) -> RequestBuilder<{{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
415-
{{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} localVariablePath = "{{{path}}}"{{#pathParams}}
416-
let {{paramName}}PreEscape = "\({{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}APIHelper.mapValueToPathItem({{paramName}}){{/isEnum}})"
417-
let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
418-
localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
419-
let localVariableURLString = openAPIClient.basePath + localVariablePath
420-
{{#bodyParam}}
421-
{{#isBinary}}
422-
let localVariableParameters = ["body": {{paramName}}]
423-
{{/isBinary}}
424-
{{^isBinary}}
425-
let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}}, codableHelper: openAPIClient.codableHelper)
426-
{{/isBinary}}
427-
{{/bodyParam}}
428-
{{^bodyParam}}
429-
{{#hasFormParams}}
430-
let localVariableFormParams: [String: Any?] = [
431-
{{#formParams}}
432-
{{> _param}},
433-
{{/formParams}}
434-
]
435-
436-
let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams)
437-
let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters)
438-
{{/hasFormParams}}
439-
{{^hasFormParams}}
440-
let localVariableParameters: [String: Any]? = nil
441-
{{/hasFormParams}}
442-
{{/bodyParam}}{{#hasQueryParams}}
443-
var localVariableUrlComponents = URLComponents(string: localVariableURLString)
444-
localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([{{^queryParams}}:{{/queryParams}}
445-
{{#queryParams}}
446-
{{> _param}},
447-
{{/queryParams}}
448-
]){{/hasQueryParams}}{{^hasQueryParams}}
449-
let localVariableUrlComponents = URLComponents(string: localVariableURLString){{/hasQueryParams}}
450-
451-
let localVariableNillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}}{{^hasConsumes}}
452-
:{{/hasConsumes}}{{/hasFormParams}}{{/headerParams}}{{#hasFormParams}}
453-
"Content-Type": {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasFormParams}}{{^hasFormParams}}{{#hasConsumes}}
454-
"Content-Type": {{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasConsumes}}{{/hasFormParams}}{{#headerParams}}
455-
{{> _param}},{{/headerParams}}
456-
]
457-
458-
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
459-
460-
let localVariableRequestBuilder: RequestBuilder<{{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = openAPIClient.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}}
461-
462-
return localVariableRequestBuilder.init(method: "{{httpMethod}}", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters, requiresAuthentication: {{#hasAuthMethods}}true{{/hasAuthMethods}}{{^hasAuthMethods}}false{{/hasAuthMethods}}, openAPIClient: openAPIClient)
463-
}
464-
{{/useVapor}}
465455
{{/operation}}
466456
}
467457
{{#swiftUseApiNamespace}}

samples/client/petstore/swift6/alamofireLibrary/Sources/PetstoreClient/Infrastructure/Models.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public struct AnyResponseSerializer<T>: ResponseSerializer {
127127
}
128128
}
129129

130-
public final class RequestTask {
130+
public final class RequestTask: @unchecked Sendable {
131131
private let lock = NSRecursiveLock()
132132
private var request: Request?
133133

0 commit comments

Comments
 (0)