Skip to content

Commit 10f43f6

Browse files
committed
[swift6] fix vapor build
1 parent e2e53be commit 10f43f6

5 files changed

Lines changed: 36 additions & 23 deletions

File tree

bin/configs/swift6-vapor.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ generateAliasAsModel: true
77
additionalProperties:
88
projectName: PetstoreClient
99
useSPMFileStructure: true
10-
useClasses: true
10+
useClasses: false
1111
useBacktickEscapes: true
1212
mapFileBinaryToData: true

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import Alamofire{{/useAlamofire}}
1919
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var basePath: String{{#useVapor}}
2020
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var customHeaders: HTTPHeaders
2121
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var apiClient: Vapor.Client?
22-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var apiWrapper: (inout Vapor.ClientRequest) throws -> ()
23-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var contentConfiguration{{/useVapor}}{{^useVapor}}
22+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var apiWrapper: @Sendable (inout Vapor.ClientRequest) throws -> ()
23+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var contentConfiguration: ContentConfiguration{{/useVapor}}{{^useVapor}}
2424
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var customHeaders: [String: String]
2525
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var credential: URLCredential?
2626
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var requestBuilderFactory: RequestBuilderFactory
@@ -49,8 +49,8 @@ import Alamofire{{/useAlamofire}}
4949
basePath: String = "{{{basePath}}}",{{#useVapor}}
5050
customHeaders: HTTPHeaders = [:],
5151
apiClient: Vapor.Client? = nil,
52-
apiWrapper: (inout Vapor.ClientRequest) throws -> () = { _ in },
53-
contentConfiguration = ContentConfiguration.default(){{/useVapor}}{{^useVapor}}
52+
apiWrapper: @escaping @Sendable (inout Vapor.ClientRequest) throws -> () = { _ in },
53+
contentConfiguration: ContentConfiguration = ContentConfiguration.default(){{/useVapor}}{{^useVapor}}
5454
customHeaders: [String: String] = [:],
5555
credential: URLCredential? = nil,
5656
requestBuilderFactory: RequestBuilderFactory = {{#useAlamofire}}AlamofireRequestBuilderFactory(){{/useAlamofire}}{{#useURLSession}}URLSessionRequestBuilderFactory(){{/useURLSession}},
@@ -63,10 +63,10 @@ import Alamofire{{/useAlamofire}}
6363
stringResponseSerializer: AnyResponseSerializer<String> = AnyResponseSerializer(StringResponseSerializer()){{/useAlamofire}}{{/useVapor}}
6464
) {
6565
self.basePath = basePath{{#useVapor}}
66-
customHeaders = customHeaders
67-
apiClient = apiClient
68-
apiWrapper = apiWrapper
69-
contentConfiguration = contentConfiguration{{/useVapor}}{{^useVapor}}
66+
self.customHeaders = customHeaders
67+
self.apiClient = apiClient
68+
self.apiWrapper = apiWrapper
69+
self.contentConfiguration = contentConfiguration{{/useVapor}}{{^useVapor}}
7070
self.customHeaders = customHeaders
7171
self.credential = credential
7272
self.requestBuilderFactory = requestBuilderFactory

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,11 @@ extension RequestBuilder {
236236
}
237237
}{{/usePromiseKit}}{{#useVapor}}
238238

239-
extension UUID: Content { }
239+
extension UUID: @retroactive Content { }
240240

241-
extension URL: Content { }
241+
extension URL: @retroactive Content { }
242242

243-
extension Bool: Content { }
244-
245-
extension Set: ResponseEncodable where Element: Content {
243+
extension Set: @retroactive ResponseEncodable where Element: Content {
246244
public func encodeResponse(for request: Vapor.Request) -> EventLoopFuture<Vapor.Response> {
247245
let response = Vapor.Response()
248246
do {
@@ -254,7 +252,15 @@ extension Set: ResponseEncodable where Element: Content {
254252
}
255253
}
256254

257-
extension Set: RequestDecodable where Element: Content {
255+
extension Set: @retroactive AsyncResponseEncodable where Element: Content {
256+
public func encodeResponse(for request: Vapor.Request) async throws -> Vapor.Response {
257+
let response = Vapor.Response()
258+
try response.content.encode(Array(self))
259+
return response
260+
}
261+
}
262+
263+
extension Set: @retroactive RequestDecodable where Element: Content {
258264
public static func decodeRequest(_ request: Vapor.Request) -> EventLoopFuture<Self> {
259265
do {
260266
let content = try request.content.decode([Element].self)
@@ -265,6 +271,13 @@ extension Set: RequestDecodable where Element: Content {
265271
}
266272
}
267273

268-
extension Set: Content where Element: Content { }
274+
extension Set: @retroactive AsyncRequestDecodable where Element: Content {
275+
public static func decodeRequest(_ request: Vapor.Request) async throws -> Self {
276+
let content = try request.content.decode([Element].self)
277+
return Set(content)
278+
}
279+
}
280+
281+
extension Set: @retroactive Content where Element: Content { }
269282

270283
extension JSONValue: Content {}{{/useVapor}}

modules/openapi-generator/src/main/resources/swift6/Package.swift.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ let package = Package(
3434
.package(url: "https://github.com/ReactiveX/RxSwift", .upToNextMajor(from: "6.8.0")),
3535
{{/useRxSwift}}
3636
{{#useVapor}}
37-
.package(url: "https://github.com/vapor/vapor", from: "4.0.0")
37+
.package(url: "https://github.com/vapor/vapor", from: "4.99.0")
3838
{{/useVapor}}
3939
],
4040
targets: [
4141
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
4242
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
4343
.target(
4444
name: "{{projectName}}",
45-
dependencies: [{{#useVapor}}"Vapor", {{/useVapor}}{{#useAlamofire}}"Alamofire", {{/useAlamofire}}{{#usePromiseKit}}"PromiseKit", {{/usePromiseKit}}{{#useRxSwift}}"RxSwift"{{/useRxSwift}}],
45+
dependencies: [{{#useVapor}}.product(name: "Vapor", package: "vapor"){{/useVapor}}{{#useAlamofire}}"Alamofire", {{/useAlamofire}}{{#usePromiseKit}}"PromiseKit", {{/usePromiseKit}}{{#useRxSwift}}"RxSwift"{{/useRxSwift}}],
4646
path: "{{swiftPackagePath}}{{^swiftPackagePath}}{{#useSPMFileStructure}}Sources/{{projectName}}{{/useSPMFileStructure}}{{^useSPMFileStructure}}{{projectName}}/Classes{{/useSPMFileStructure}}{{/swiftPackagePath}}"
4747
),
4848
],

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -357,19 +357,19 @@ extension {{projectName}}API {
357357
{{#isDeprecated}}
358358
@available(*, deprecated, message: "This operation is deprecated.")
359359
{{/isDeprecated}}
360-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}Raw({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}APIConfiguration.shared.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<ClientResponse> {
360+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}Raw({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}APIConfiguration.shared.customHeaders, apiConfiguration: {{projectName}}APIConfiguration = {{projectName}}APIConfiguration.shared, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<ClientResponse> {
361361
{{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} localVariablePath = "{{{path}}}"{{#pathParams}}
362362
let {{paramName}}PreEscape = String(describing: {{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}{{paramName}}{{/isEnum}})
363363
let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
364364
localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
365365
let localVariableURLString = apiConfiguration.basePath + localVariablePath
366366

367-
guard let localVariableApiClient = {{#swiftUseApiNamespace}}{{projectName}}API.{{/swiftUseApiNamespace}}apiConfiguration.apiClient else {
367+
guard let localVariableApiClient = apiConfiguration.apiClient else {
368368
fatalError("apiConfiguration.apiClient is not set.")
369369
}
370370

371371
return localVariableApiClient.send(.{{httpMethod}}, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in
372-
try {{#swiftUseApiNamespace}}{{projectName}}API.{{/swiftUseApiNamespace}}Configuration.apiWrapper(&localVariableRequest)
372+
try apiConfiguration.apiWrapper(&localVariableRequest)
373373
{{#hasHeaderParams}}{{#headerParams}}
374374
localVariableRequest.headers.add(name: "{{baseName}}", value: {{#isArray}}{{paramName}}{{^required}}?{{/required}}.map { $0{{#isEnum}}.rawValue{{/isEnum}}.description }.description{{/isArray}}{{^isArray}}{{#isEnum}}{{paramName}}{{^required}}?{{/required}}.rawValue.description{{/isEnum}}{{^isEnum}}{{paramName}}{{^required}}?{{/required}}.description{{/isEnum}}{{/isArray}}{{^required}} ?? ""{{/required}})
375375
{{/headerParams}}{{/hasHeaderParams}}
@@ -437,8 +437,8 @@ extension {{projectName}}API {
437437
{{#isDeprecated}}
438438
@available(*, deprecated, message: "This operation is deprecated.")
439439
{{/isDeprecated}}
440-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}APIConfiguration.shared.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}> {
441-
return {{operationId}}Raw({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} in
440+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} {{#apiStaticMethod}}class {{/apiStaticMethod}}func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}APIConfiguration.shared.customHeaders, apiConfiguration: {{projectName}}APIConfiguration = {{projectName}}APIConfiguration.shared, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}> {
441+
return {{operationId}}Raw({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: headers, apiConfiguration: apiConfiguration, beforeSend: beforeSend).flatMapThrowing { response -> {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} in
442442
switch response.status.code {
443443
{{#responses}}
444444
{{#isDefault}}default{{/isDefault}}{{^isDefault}}case {{code}}{{/isDefault}}:

0 commit comments

Comments
 (0)