diff --git a/Tangem/App/Factories/ExpressModulesFactory/ExpressAPIProviderFactory.swift b/Tangem/App/Factories/ExpressModulesFactory/ExpressAPIProviderFactory.swift index a2cf0103b7..a05d989345 100644 --- a/Tangem/App/Factories/ExpressModulesFactory/ExpressAPIProviderFactory.swift +++ b/Tangem/App/Factories/ExpressModulesFactory/ExpressAPIProviderFactory.swift @@ -25,10 +25,14 @@ struct ExpressAPIProviderFactory { let publicKey = signVerifierPublicKey(expressAPIType: expressAPIType) let exchangeDataDecoder = CommonExpressExchangeDataDecoder(publicKey: publicKey) + let containsRing = AppSettings.shared.userWalletIdsWithRing.contains(userId) + let refcode = containsRing ? Refcodes.ring.rawValue : nil + let credentials = ExpressAPICredential( apiKey: apiKey, userId: userId, - sessionId: AppConstants.sessionId + sessionId: AppConstants.sessionId, + refcode: refcode ) let deviceInfo = ExpressDeviceInfo( @@ -85,3 +89,9 @@ private extension ExpressAPIProviderFactory { return .unknown.lowercased() } } + +private extension ExpressAPIProviderFactory { + enum Refcodes: String { + case ring + } +} diff --git a/TangemExpress/Factory/TangemExpressFactory.swift b/TangemExpress/Factory/TangemExpressFactory.swift index cab0134d5e..caf7b6affc 100644 --- a/TangemExpress/Factory/TangemExpressFactory.swift +++ b/TangemExpress/Factory/TangemExpressFactory.swift @@ -54,7 +54,8 @@ public struct TangemExpressFactory { ExpressAuthorizationPlugin( apiKey: credential.apiKey, userId: credential.userId, - sessionId: credential.sessionId + sessionId: credential.sessionId, + refcode: credential.refcode ), ExpressDeviceInfoPlugin(deviceInfo: deviceInfo), TangemNetworkLoggerPlugin(configuration: .init( @@ -75,11 +76,13 @@ public struct ExpressAPICredential { public let apiKey: String public let userId: String public let sessionId: String + public let refcode: String? - public init(apiKey: String, userId: String, sessionId: String) { + public init(apiKey: String, userId: String, sessionId: String, refcode: String?) { self.apiKey = apiKey self.userId = userId self.sessionId = sessionId + self.refcode = refcode } } diff --git a/TangemExpress/Services/ExpressAPIService/Types/ExpressAuthorizationPlugin.swift b/TangemExpress/Services/ExpressAPIService/Types/ExpressAuthorizationPlugin.swift index 864c87ebdc..b9784e49ba 100644 --- a/TangemExpress/Services/ExpressAPIService/Types/ExpressAuthorizationPlugin.swift +++ b/TangemExpress/Services/ExpressAPIService/Types/ExpressAuthorizationPlugin.swift @@ -12,6 +12,7 @@ struct ExpressAuthorizationPlugin: PluginType { let apiKey: String let userId: String let sessionId: String + let refcode: String? func prepare(_ request: URLRequest, target: TargetType) -> URLRequest { var request = request @@ -20,6 +21,10 @@ struct ExpressAuthorizationPlugin: PluginType { request.headers.add(name: "user-id", value: userId) request.headers.add(name: "session-id", value: sessionId) + if let refcode { + request.headers.add(name: "refcode", value: refcode) + } + return request } }