From ee92ba6841e5ae186a04ba50196135614ed0f24c Mon Sep 17 00:00:00 2001 From: Felix Schmidt Date: Fri, 9 Dec 2022 14:11:36 +0100 Subject: [PATCH 01/11] 14396: Proposal solution to discuss --- .../OTPAuthorizationForSRSResource.swift | 2 ++ .../ExposureSubmissionCoordinatorModel.swift | 22 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift index 7f5301478a4..c2a9e035355 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift @@ -67,6 +67,8 @@ struct OTPAuthorizationForSRSResource: Resource { switch statusCode { case 400, 401, 403: return otpAuthorizationFailureHandler(for: responseBody, statusCode: statusCode) + case 429: + return .apiTokenQuotaExceeded case 500: Log.error("Failed to get authorized OTP - 500 status code", log: .api) return .otherServerError diff --git a/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift b/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift index dbcdfe314e3..ca0b09e96e8 100644 --- a/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift +++ b/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift @@ -237,7 +237,27 @@ class ExposureSubmissionCoordinatorModel { } case .failure(let srsError): - onError(.srsError(srsError)) + switch srsError { + case .otpError(let otpError): + switch otpError { + case .restServiceError(let serverError): + switch serverError { + case .receivedResourceError(let otpAuthorizationError): + switch otpAuthorizationError { + case .apiTokenQuotaExceeded: + onError(.srsError(.otpError(.apiTokenQuotaExceeded))) + default: + onError(.srsError(.otpError(otpError))) + } + default: + onError(.srsError(.otpError(otpError))) + } + default: + onError(.srsError(.otpError(otpError))) + } + default: + onError(.srsError(srsError)) + } Log.debug(srsError.description, log: .ppac) } } From 30cf5cb74d92ff09851e3e6bec8d92eaa930ac50 Mon Sep 17 00:00:00 2001 From: Felix Schmidt Date: Mon, 12 Dec 2022 13:41:02 +0100 Subject: [PATCH 02/11] 14396: PR feedback --- .../OTPAuthorizationForSRSResource.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift index c2a9e035355..706d7aefb57 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift @@ -65,10 +65,8 @@ struct OTPAuthorizationForSRSResource: Resource { return .noNetworkConnection case .unexpectedServerError(let statusCode): switch statusCode { - case 400, 401, 403: + case 400, 401, 403, 429: return otpAuthorizationFailureHandler(for: responseBody, statusCode: statusCode) - case 429: - return .apiTokenQuotaExceeded case 500: Log.error("Failed to get authorized OTP - 500 status code", log: .api) return .otherServerError From 1b70e20d23eac6a07edf595f9162152d7e712c10 Mon Sep 17 00:00:00 2001 From: Felix Schmidt Date: Mon, 12 Dec 2022 14:02:47 +0100 Subject: [PATCH 03/11] 14396: more errors resolving --- .../OTPAuthorizationForELSResource.swift | 3 + .../OTPAuthorizationForSRSResource.swift | 2 + .../Survey/SurveyURLProvider.swift | 2 +- .../ExposureSubmissionCoordinatorModel.swift | 58 ++++++++++++------- .../Source/Services/OTP/Model/OTPError.swift | 3 + 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForELS/OTPAuthorizationForELSResource.swift b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForELS/OTPAuthorizationForELSResource.swift index 64623b1e7ce..1a907040cdd 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForELS/OTPAuthorizationForELSResource.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForELS/OTPAuthorizationForELSResource.swift @@ -14,6 +14,7 @@ enum OTPAuthorizationError: LocalizedError, Equatable { case apiTokenAlreadyIssued case apiTokenExpired case apiTokenQuotaExceeded + case deviceBlocked case deviceTokenInvalid case deviceTokenRedeemed case deviceTokenSyntaxError @@ -41,6 +42,8 @@ enum OTPAuthorizationError: LocalizedError, Equatable { return "apiTokenExpired" case .apiTokenQuotaExceeded: return "apiTokenQuotaExceeded" + case .deviceBlocked: + return "deviceBlocked" case .deviceTokenInvalid: return "deviceTokenInvalid" case .deviceTokenRedeemed: diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift index 706d7aefb57..f60e57e8536 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift @@ -106,6 +106,8 @@ struct OTPAuthorizationForSRSResource: Resource { return .apiTokenExpired case .API_TOKEN_QUOTA_EXCEEDED: return .apiTokenQuotaExceeded + case .DEVICE_BLOCKED: + return .deviceBlocked case .DEVICE_TOKEN_INVALID: return .deviceTokenInvalid case .DEVICE_TOKEN_REDEEMED: diff --git a/src/xcode/ENA/ENA/Source/Scenes/ExposureDetection/Survey/SurveyURLProvider.swift b/src/xcode/ENA/ENA/Source/Scenes/ExposureDetection/Survey/SurveyURLProvider.swift index 2eed612e03e..c19c1947bb1 100644 --- a/src/xcode/ENA/ENA/Source/Scenes/ExposureDetection/Survey/SurveyURLProvider.swift +++ b/src/xcode/ENA/ENA/Source/Scenes/ExposureDetection/Survey/SurveyURLProvider.swift @@ -34,7 +34,7 @@ enum SurveyError: Error { init(otpError: OTPError) { switch otpError { - case .generalError, .invalidResponseError, .internalServerError, .otherServerError, .apiTokenExpired, .deviceTokenInvalid, .deviceTokenRedeemed, .deviceTokenSyntaxError, .noNetworkConnection, .restServiceError: + case .generalError, .invalidResponseError, .internalServerError, .otherServerError, .apiTokenExpired, .deviceBlocked, .deviceTokenInvalid, .deviceTokenRedeemed, .deviceTokenSyntaxError, .noNetworkConnection, .restServiceError: self = .tryAgainLater(otpError.description) case .apiTokenAlreadyIssued, .otpAlreadyUsedThisMonth: self = .tryAgainNextMonth(otpError.description) diff --git a/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift b/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift index ca0b09e96e8..0dd979ab8e2 100644 --- a/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift +++ b/src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSubmissionCoordinatorModel.swift @@ -237,27 +237,7 @@ class ExposureSubmissionCoordinatorModel { } case .failure(let srsError): - switch srsError { - case .otpError(let otpError): - switch otpError { - case .restServiceError(let serverError): - switch serverError { - case .receivedResourceError(let otpAuthorizationError): - switch otpAuthorizationError { - case .apiTokenQuotaExceeded: - onError(.srsError(.otpError(.apiTokenQuotaExceeded))) - default: - onError(.srsError(.otpError(otpError))) - } - default: - onError(.srsError(.otpError(otpError))) - } - default: - onError(.srsError(.otpError(otpError))) - } - default: - onError(.srsError(srsError)) - } + self.handleSRSError(srsError, onError: onError) Log.debug(srsError.description, log: .ppac) } } @@ -509,4 +489,40 @@ class ExposureSubmissionCoordinatorModel { // MARK: - Private private let store: Store + + private func handleSRSError(_ srsError: SRSError, onError: @escaping (ExposureSubmissionServiceError) -> Void) { + switch srsError { + case .otpError(let otpError): + switch otpError { + case .restServiceError(let serverError): + switch serverError { + case .receivedResourceError(let otpAuthorizationError): + switch otpAuthorizationError { + case .apiTokenAlreadyIssued: + onError(.srsError(.otpError(.apiTokenAlreadyIssued))) + case .apiTokenExpired: + onError(.srsError(.otpError(.apiTokenExpired))) + case .apiTokenQuotaExceeded: + onError(.srsError(.otpError(.apiTokenQuotaExceeded))) + case .deviceBlocked: + onError(.srsError(.otpError(.deviceBlocked))) + case .deviceTokenInvalid: + onError(.srsError(.otpError(.deviceTokenInvalid))) + case .deviceTokenRedeemed: + onError(.srsError(.otpError(.deviceTokenRedeemed))) + case .deviceTokenSyntaxError: + onError(.srsError(.otpError(.deviceTokenSyntaxError))) + default: + onError(.srsError(.otpError(otpError))) + } + default: + onError(.srsError(.otpError(otpError))) + } + default: + onError(.srsError(.otpError(otpError))) + } + default: + onError(.srsError(srsError)) + } + } } diff --git a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift index c8af1156d42..e5ad82d01c3 100644 --- a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift +++ b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift @@ -13,6 +13,7 @@ enum OTPError: Error, Equatable, LocalizedError { case apiTokenAlreadyIssued case apiTokenExpired case apiTokenQuotaExceeded + case deviceBlocked case deviceTokenInvalid case deviceTokenRedeemed case deviceTokenSyntaxError @@ -42,6 +43,8 @@ enum OTPError: Error, Equatable, LocalizedError { return "apiTokenExpired" case .apiTokenQuotaExceeded: return "apiTokenQuotaExceeded" + case .deviceBlocked: + return "deviceBlocked" case .deviceTokenInvalid: return "deviceTokenInvalid" case .deviceTokenRedeemed: From 95370e58dc579e04c0e2f725aacf740711a9d5ba Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 14:57:47 +0100 Subject: [PATCH 04/11] changes to locator --- .../HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift b/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift index 62d1ece7cb8..911a9c12463 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift @@ -11,16 +11,19 @@ extension Locator { // type: default // comment: the endpoint for otp authorization for SRS static func authorizeOtpSrs( + forceApiTokenHeader: Bool = false, isFake: Bool ) -> Locator { let fake = String(isFake ? 1 : 0) + let forceApiHeader = String(forceApiTokenHeader ? 1 : 0) return Locator( endpoint: .dataDonation, paths: ["version", "v1", "ios", "srs"], method: .post, defaultHeaders: [ "Content-Type": "application/x-protobuf", - "cwa-fake": fake + "cwa-fake": fake, + "cwa-ppac-ios-accept-api-token": forceApiHeader ] ) } From d03450d323631b46aea080bbbcbc5fa4d7a60ecc Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 15:13:10 +0100 Subject: [PATCH 05/11] changes to otp service --- src/xcode/ENA/ENA/Source/Services/OTP/OTPService.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/xcode/ENA/ENA/Source/Services/OTP/OTPService.swift b/src/xcode/ENA/ENA/Source/Services/OTP/OTPService.swift index e37283cc65a..60c45cb3f1d 100644 --- a/src/xcode/ENA/ENA/Source/Services/OTP/OTPService.swift +++ b/src/xcode/ENA/ENA/Source/Services/OTP/OTPService.swift @@ -239,7 +239,8 @@ final class OTPService: OTPServiceProviding { private func authorizeSRS(_ otp: String, with ppacToken: PPACToken, completion: @escaping (Result) -> Void) { Log.info("Authorization of a new OTP SRS started.", log: .otp) // We authorize the otp with the ppac Token at our server. - let resource = OTPAuthorizationForSRSResource(otpSRS: otp, ppacToken: ppacToken) + + let resource = OTPAuthorizationForSRSResource(otpSRS: otp, forceApiTokenHeader: store.forceAPITokenAuthorization, ppacToken: ppacToken) restServiceProvider.load(resource) { [weak self] result in guard let self = self else { Log.error("could not create strong self", log: .otp) From 574f65c74ccb8b236d992187c42b1bd21650bdd9 Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 15:13:33 +0100 Subject: [PATCH 06/11] adding another locator --- .../LocatorsNotYetUsed/authorizeOtpSrs.swift | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift b/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift index 911a9c12463..2dffcc18bd8 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/LocatorsNotYetUsed/authorizeOtpSrs.swift @@ -12,19 +12,33 @@ extension Locator { // comment: the endpoint for otp authorization for SRS static func authorizeOtpSrs( forceApiTokenHeader: Bool = false, - isFake: Bool + isFake: Bool ) -> Locator { let fake = String(isFake ? 1 : 0) let forceApiHeader = String(forceApiTokenHeader ? 1 : 0) - return Locator( - endpoint: .dataDonation, - paths: ["version", "v1", "ios", "srs"], - method: .post, - defaultHeaders: [ - "Content-Type": "application/x-protobuf", - "cwa-fake": fake, + + #if !RELEASE + return Locator( + endpoint: .dataDonation, + paths: ["version", "v1", "ios", "srs"], + method: .post, + defaultHeaders: [ + "Content-Type": "application/x-protobuf", + "cwa-fake": fake, + "cwa-ppac-ios-accept-api-token": forceApiHeader + ] + ) + #else + return Locator( + endpoint: .dataDonation, + paths: ["version", "v1", "ios", "srs"], + method: .post, + defaultHeaders: [ + "Content-Type": "application/x-protobuf", + "cwa-fake": fake, "cwa-ppac-ios-accept-api-token": forceApiHeader - ] - ) + ] + ) + #endif } } From 1394d1ff0c5b7ecec8ebcc7722b6be1faafa8919 Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 15:14:07 +0100 Subject: [PATCH 07/11] passing the value to the locator --- .../OTPAuthorizationForSRSResource.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift index f60e57e8536..4640a667856 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift @@ -11,6 +11,7 @@ struct OTPAuthorizationForSRSResource: Resource { init( otpSRS: String, requestPadding: Data? = nil, + forceApiTokenHeader: Bool = false, isFake: Bool = false, ppacToken: PPACToken, trustEvaluation: TrustEvaluating = DefaultTrustEvaluation( @@ -37,7 +38,7 @@ struct OTPAuthorizationForSRSResource: Resource { } ) - self.locator = .authorizeOtpSrs(isFake: isFake) + self.locator = .authorizeOtpSrs(forceApiTokenHeader: forceApiTokenHeader, isFake: isFake) self.type = .default self.receiveResource = JSONReceiveResource() self.trustEvaluation = trustEvaluation From 8cdd371a0c1c6d05a3fe92a3775f5bcbc80921b3 Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 15:20:26 +0100 Subject: [PATCH 08/11] fixing swift lint --- .../OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift | 1 + src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift index 4640a667856..0ecc7ac2b4b 100644 --- a/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift +++ b/src/xcode/ENA/ENA/Source/HTTPClient/Resources/OTPAuthorizationForSRS/OTPAuthorizationForSRSResource.swift @@ -82,6 +82,7 @@ struct OTPAuthorizationForSRSResource: Resource { // MARK: - Private + // swiftlint:disable:next cyclomatic_complexity private func otpAuthorizationFailureHandler(for response: Data?, statusCode: Int) -> OTPAuthorizationError? { guard let responseBody = response else { Log.error("Failed to get authorized OTP - no 200 status code: \(statusCode)", log: .api) diff --git a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift index e5ad82d01c3..1ca3ee766bb 100644 --- a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift +++ b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift @@ -55,7 +55,7 @@ enum OTPError: Error, Equatable, LocalizedError { return "noNetworkConnection" case .restServiceError: return "restServiceError" - } + } } var errorDescription: String? { From fe15d59fc535bfe8ef6b52b5ffc9cc18fa1c0861 Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 15:25:15 +0100 Subject: [PATCH 09/11] fixing swift lint --- src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift index 1ca3ee766bb..88855a482d6 100644 --- a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift +++ b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift @@ -43,8 +43,6 @@ enum OTPError: Error, Equatable, LocalizedError { return "apiTokenExpired" case .apiTokenQuotaExceeded: return "apiTokenQuotaExceeded" - case .deviceBlocked: - return "deviceBlocked" case .deviceTokenInvalid: return "deviceTokenInvalid" case .deviceTokenRedeemed: @@ -55,6 +53,8 @@ enum OTPError: Error, Equatable, LocalizedError { return "noNetworkConnection" case .restServiceError: return "restServiceError" + case .deviceBlocked: + return "deviceBlocked" } } From bb7e9d9f142647298e853fa8d1c6cb78b5807bb7 Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 16:16:15 +0100 Subject: [PATCH 10/11] another try to fix swift lint --- src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift index 88855a482d6..fa130dc4c81 100644 --- a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift +++ b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift @@ -43,6 +43,8 @@ enum OTPError: Error, Equatable, LocalizedError { return "apiTokenExpired" case .apiTokenQuotaExceeded: return "apiTokenQuotaExceeded" + case .deviceBlocked: + return "deviceBlocked" case .deviceTokenInvalid: return "deviceTokenInvalid" case .deviceTokenRedeemed: @@ -53,9 +55,6 @@ enum OTPError: Error, Equatable, LocalizedError { return "noNetworkConnection" case .restServiceError: return "restServiceError" - case .deviceBlocked: - return "deviceBlocked" - } } var errorDescription: String? { From a79bd1240561b1203fb4c1e3454bfe3db038d618 Mon Sep 17 00:00:00 2001 From: Naveed Khalid Date: Mon, 12 Dec 2022 16:27:56 +0100 Subject: [PATCH 11/11] fixing build for testing --- .../Source/Services/OTP/Model/OTPError.swift | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift index fa130dc4c81..5b933bc9fa5 100644 --- a/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift +++ b/src/xcode/ENA/ENA/Source/Services/OTP/Model/OTPError.swift @@ -22,39 +22,40 @@ enum OTPError: Error, Equatable, LocalizedError { case restServiceError(ServiceError) var description: String { - switch self { - case .generalError(let error): - if let e = error?.localizedDescription { - return "generalError with underlying: \(e)" - } else { - return "generalError" - } - case .invalidResponseError: - return "invalidResponseError" - case .internalServerError: - return "internalServerError" - case .otpAlreadyUsedThisMonth: - return "otpAlreadyUsedThisMonth" - case .otherServerError: - return "otherServerError" - case .apiTokenAlreadyIssued: - return "apiTokenAlreadyIssued" - case .apiTokenExpired: - return "apiTokenExpired" - case .apiTokenQuotaExceeded: - return "apiTokenQuotaExceeded" - case .deviceBlocked: - return "deviceBlocked" - case .deviceTokenInvalid: - return "deviceTokenInvalid" - case .deviceTokenRedeemed: - return "deviceTokenRedeemed" - case .deviceTokenSyntaxError: - return "deviceTokenSyntaxError" - case .noNetworkConnection: - return "noNetworkConnection" - case .restServiceError: - return "restServiceError" + switch self { + case .generalError(let error): + if let e = error?.localizedDescription { + return "generalError with underlying: \(e)" + } else { + return "generalError" + } + case .invalidResponseError: + return "invalidResponseError" + case .internalServerError: + return "internalServerError" + case .otpAlreadyUsedThisMonth: + return "otpAlreadyUsedThisMonth" + case .otherServerError: + return "otherServerError" + case .apiTokenAlreadyIssued: + return "apiTokenAlreadyIssued" + case .apiTokenExpired: + return "apiTokenExpired" + case .apiTokenQuotaExceeded: + return "apiTokenQuotaExceeded" + case .deviceBlocked: + return "deviceBlocked" + case .deviceTokenInvalid: + return "deviceTokenInvalid" + case .deviceTokenRedeemed: + return "deviceTokenRedeemed" + case .deviceTokenSyntaxError: + return "deviceTokenSyntaxError" + case .noNetworkConnection: + return "noNetworkConnection" + case .restServiceError: + return "restServiceError" + } } var errorDescription: String? {