diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache index 95733f9d546..294dc7418ea 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ private var urlSessionStore = SynchronizedDictionary() {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ private var urlSessionStore = SynchronizedDictionary() } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ private var urlSessionStore = SynchronizedDictionary() } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 8e6e4d85ec3..c8ac98f2026 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() internal class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { internal func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ internal class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index eda7e851c9e..52b2071ec1a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -24,9 +24,6 @@ private var urlSessionStore = SynchronizedDictionary() open class URLSessionRequestBuilder: RequestBuilder { - // swiftlint:disable:next weak_delegate - fileprivate let sessionDelegate = SessionDelegate() - /** May be assigned if you want to control the authentication challenges. */ @@ -52,6 +49,7 @@ open class URLSessionRequestBuilder: RequestBuilder { open func createURLSession() -> URLSession { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() sessionDelegate.credential = credential sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) @@ -126,6 +124,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() urlSessionStore[urlSessionId] = nil } @@ -144,12 +143,14 @@ open class URLSessionRequestBuilder: RequestBuilder { } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } } } else { apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() } } }