Skip to content

Commit 39fb510

Browse files
authored
[swift6] alamofire interceptor (#19796)
* [swift6] alamofire interceptor * [swift6] alamofire interceptor
1 parent 77e8346 commit 39fb510

File tree

9 files changed

+22
-52
lines changed

9 files changed

+22
-52
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import Alamofire{{/useAlamofire}}
3131
///
3232
/// If a HTTP status code is outside of this range the response will be interpreted as failed.
3333
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var successfulStatusCodeRange: Range<Int>{{#useAlamofire}}
34+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var interceptor: RequestInterceptor?
3435
/// ResponseSerializer that will be used by the generator for `Data` responses
3536
///
3637
/// If unchanged, Alamofires default `DataResponseSerializer` will be used.
@@ -52,6 +53,7 @@ import Alamofire{{/useAlamofire}}
5253
apiResponseQueue: DispatchQueue = .main,
5354
codableHelper: CodableHelper = CodableHelper(),
5455
successfulStatusCodeRange: Range<Int> = 200..<300{{#useAlamofire}},
56+
interceptor: RequestInterceptor? = nil,
5557
dataResponseSerializer: AnyResponseSerializer<Data> = AnyResponseSerializer(DataResponseSerializer()),
5658
stringResponseSerializer: AnyResponseSerializer<String> = AnyResponseSerializer(StringResponseSerializer()){{/useAlamofire}}{{/useVapor}}
5759
) {
@@ -66,6 +68,7 @@ import Alamofire{{/useAlamofire}}
6668
self.apiResponseQueue = apiResponseQueue
6769
self.codableHelper = codableHelper
6870
self.successfulStatusCodeRange = successfulStatusCodeRange{{#useAlamofire}}
71+
self.interceptor = interceptor
6972
self.dataResponseSerializer = dataResponseSerializer
7073
self.stringResponseSerializer = stringResponseSerializer{{/useAlamofire}}{{/useVapor}}
7174
}

modules/openapi-generator/src/main/resources/swift6/libraries/alamofire/AlamofireImplementations.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ fileprivate class AlamofireRequestBuilderConfiguration: @unchecked Sendable {
3636
May be overridden by a subclass if you want to control the session
3737
configuration.
3838
*/
39-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createAlamofireSession(interceptor: RequestInterceptor? = nil) -> Alamofire.Session {
39+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createAlamofireSession() -> Alamofire.Session {
4040
let configuration = URLSessionConfiguration.default
4141
configuration.httpAdditionalHeaders = buildHeaders()
4242
return Alamofire.Session(configuration: configuration,
43-
interceptor: interceptor)
43+
interceptor: openAPIClient.interceptor)
4444
}
4545

4646
/**

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ open class OpenAPIClient: @unchecked Sendable {
2222
///
2323
/// If a HTTP status code is outside of this range the response will be interpreted as failed.
2424
public var successfulStatusCodeRange: Range<Int>
25+
public var interceptor: RequestInterceptor?
2526
/// ResponseSerializer that will be used by the generator for `Data` responses
2627
///
2728
/// If unchanged, Alamofires default `DataResponseSerializer` will be used.
@@ -39,6 +40,7 @@ open class OpenAPIClient: @unchecked Sendable {
3940
apiResponseQueue: DispatchQueue = .main,
4041
codableHelper: CodableHelper = CodableHelper(),
4142
successfulStatusCodeRange: Range<Int> = 200..<300,
43+
interceptor: RequestInterceptor? = nil,
4244
dataResponseSerializer: AnyResponseSerializer<Data> = AnyResponseSerializer(DataResponseSerializer()),
4345
stringResponseSerializer: AnyResponseSerializer<String> = AnyResponseSerializer(StringResponseSerializer())
4446
) {
@@ -49,6 +51,7 @@ open class OpenAPIClient: @unchecked Sendable {
4951
self.apiResponseQueue = apiResponseQueue
5052
self.codableHelper = codableHelper
5153
self.successfulStatusCodeRange = successfulStatusCodeRange
54+
self.interceptor = interceptor
5255
self.dataResponseSerializer = dataResponseSerializer
5356
self.stringResponseSerializer = stringResponseSerializer
5457
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T>, @unchecked Sendable {
3636
May be overridden by a subclass if you want to control the session
3737
configuration.
3838
*/
39-
open func createAlamofireSession(interceptor: RequestInterceptor? = nil) -> Alamofire.Session {
39+
open func createAlamofireSession() -> Alamofire.Session {
4040
let configuration = URLSessionConfiguration.default
4141
configuration.httpAdditionalHeaders = buildHeaders()
4242
return Alamofire.Session(configuration: configuration,
43-
interceptor: interceptor)
43+
interceptor: openAPIClient.interceptor)
4444
}
4545

4646
/**

samples/client/petstore/swift6/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; };
1717
6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; };
1818
6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; };
19-
A5465873259E306E00C3929B /* BearerDecodableRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5465872259E306E00C3929B /* BearerDecodableRequestBuilder.swift */; };
19+
A5465873259E306E00C3929B /* BearerTokenHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5465872259E306E00C3929B /* BearerTokenHandler.swift */; };
2020
A5782C6D2664F91D00CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C6C2664F91D00CAA106 /* PetstoreClient */; };
2121
A5EA12542419387200E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12522419387100E30FC3 /* FileUtils.swift */; };
2222
A5EA12552419387200E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12532419387100E30FC3 /* UIImage+Extras.swift */; };
@@ -46,7 +46,7 @@
4646
6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = "<group>"; };
4747
6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = "<group>"; };
4848
6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = "<group>"; };
49-
A5465872259E306E00C3929B /* BearerDecodableRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BearerDecodableRequestBuilder.swift; sourceTree = "<group>"; };
49+
A5465872259E306E00C3929B /* BearerTokenHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BearerTokenHandler.swift; sourceTree = "<group>"; };
5050
A5EA12522419387100E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = "<group>"; };
5151
A5EA12532419387100E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = "<group>"; };
5252
/* End PBXFileReference section */
@@ -101,7 +101,7 @@
101101
children = (
102102
6D4EFB941C692C6300B96B06 /* AppDelegate.swift */,
103103
6D4EFB961C692C6300B96B06 /* ViewController.swift */,
104-
A5465872259E306E00C3929B /* BearerDecodableRequestBuilder.swift */,
104+
A5465872259E306E00C3929B /* BearerTokenHandler.swift */,
105105
6D4EFB981C692C6300B96B06 /* Main.storyboard */,
106106
6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */,
107107
6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */,
@@ -231,7 +231,7 @@
231231
buildActionMask = 2147483647;
232232
files = (
233233
6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */,
234-
A5465873259E306E00C3929B /* BearerDecodableRequestBuilder.swift in Sources */,
234+
A5465873259E306E00C3929B /* BearerTokenHandler.swift in Sources */,
235235
6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */,
236236
);
237237
runOnlyForDeploymentPostprocessing = 0;

samples/client/petstore/swift6/alamofireLibrary/SwaggerClientTests/SwaggerClient/AppDelegate.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
1616

1717
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
1818
// Override point for customization after application launch.
19-
20-
// Customize requestBuilderFactory
21-
OpenAPIClient.shared.requestBuilderFactory = BearerRequestBuilderFactory()
19+
20+
OpenAPIClient.shared.interceptor = BearerTokenHandler()
2221

2322
return true
2423
}
Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// BearerDecodableRequestBuilder.swift
2+
// BearerTokenHandler.swift
33
// SwaggerClient
44
//
55
// Created by Bruno Coelho on 31/12/2020.
@@ -10,44 +10,6 @@ import Foundation
1010
import Alamofire
1111
import PetstoreClient
1212

13-
class BearerRequestBuilderFactory: RequestBuilderFactory {
14-
func getNonDecodableBuilder<T>() -> RequestBuilder<T>.Type {
15-
BearerRequestBuilder<T>.self
16-
}
17-
18-
func getBuilder<T: Decodable>() -> RequestBuilder<T>.Type {
19-
BearerDecodableRequestBuilder<T>.self
20-
}
21-
}
22-
23-
class BearerRequestBuilder<T>: AlamofireRequestBuilder<T>, @unchecked Sendable {
24-
override func createAlamofireSession(interceptor: RequestInterceptor? = nil) -> Session {
25-
if self.requiresAuthentication {
26-
27-
let bearerTokenHandler = BearerTokenHandler()
28-
let alamofireSession = super.createAlamofireSession(interceptor: bearerTokenHandler)
29-
30-
return alamofireSession
31-
} else {
32-
return super.createAlamofireSession(interceptor: nil)
33-
}
34-
}
35-
}
36-
37-
class BearerDecodableRequestBuilder<T: Decodable>: AlamofireDecodableRequestBuilder<T>, @unchecked Sendable {
38-
override func createAlamofireSession(interceptor: RequestInterceptor? = nil) -> Session {
39-
if self.requiresAuthentication {
40-
41-
let bearerTokenHandler = BearerTokenHandler()
42-
let alamofireSession = super.createAlamofireSession(interceptor: bearerTokenHandler)
43-
44-
return alamofireSession
45-
} else {
46-
return super.createAlamofireSession(interceptor: nil)
47-
}
48-
}
49-
}
50-
5113
class BearerTokenHandler: RequestInterceptor, @unchecked Sendable {
5214
private var bearerToken: String? = nil
5315

samples/client/petstore/swift6/apiNonStaticMethod/Sources/PetstoreClient/Infrastructure/APIs.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ open class OpenAPIClient: @unchecked Sendable {
2222
///
2323
/// If a HTTP status code is outside of this range the response will be interpreted as failed.
2424
public var successfulStatusCodeRange: Range<Int>
25+
public var interceptor: RequestInterceptor?
2526
/// ResponseSerializer that will be used by the generator for `Data` responses
2627
///
2728
/// If unchanged, Alamofires default `DataResponseSerializer` will be used.
@@ -39,6 +40,7 @@ open class OpenAPIClient: @unchecked Sendable {
3940
apiResponseQueue: DispatchQueue = .main,
4041
codableHelper: CodableHelper = CodableHelper(),
4142
successfulStatusCodeRange: Range<Int> = 200..<300,
43+
interceptor: RequestInterceptor? = nil,
4244
dataResponseSerializer: AnyResponseSerializer<Data> = AnyResponseSerializer(DataResponseSerializer()),
4345
stringResponseSerializer: AnyResponseSerializer<String> = AnyResponseSerializer(StringResponseSerializer())
4446
) {
@@ -49,6 +51,7 @@ open class OpenAPIClient: @unchecked Sendable {
4951
self.apiResponseQueue = apiResponseQueue
5052
self.codableHelper = codableHelper
5153
self.successfulStatusCodeRange = successfulStatusCodeRange
54+
self.interceptor = interceptor
5255
self.dataResponseSerializer = dataResponseSerializer
5356
self.stringResponseSerializer = stringResponseSerializer
5457
}

samples/client/petstore/swift6/apiNonStaticMethod/Sources/PetstoreClient/Infrastructure/AlamofireImplementations.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T>, @unchecked Sendable {
3636
May be overridden by a subclass if you want to control the session
3737
configuration.
3838
*/
39-
open func createAlamofireSession(interceptor: RequestInterceptor? = nil) -> Alamofire.Session {
39+
open func createAlamofireSession() -> Alamofire.Session {
4040
let configuration = URLSessionConfiguration.default
4141
configuration.httpAdditionalHeaders = buildHeaders()
4242
return Alamofire.Session(configuration: configuration,
43-
interceptor: interceptor)
43+
interceptor: openAPIClient.interceptor)
4444
}
4545

4646
/**

0 commit comments

Comments
 (0)