From 534116e8db6f62da00878603aecc5541b0674791 Mon Sep 17 00:00:00 2001 From: Anton Stavnichiy Date: Wed, 29 May 2024 17:51:12 +0400 Subject: [PATCH] update tvl response and api --- Sources/MarketKit/Classes/Managers/CoinManager.swift | 6 +++--- Sources/MarketKit/Classes/Models/DefiCoin.swift | 1 + Sources/MarketKit/Classes/Models/DefiCoinRaw.swift | 9 ++++++--- Sources/MarketKit/Classes/Providers/HsProvider.swift | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Sources/MarketKit/Classes/Managers/CoinManager.swift b/Sources/MarketKit/Classes/Managers/CoinManager.swift index 12a99c2..70e2659 100644 --- a/Sources/MarketKit/Classes/Managers/CoinManager.swift +++ b/Sources/MarketKit/Classes/Managers/CoinManager.swift @@ -100,11 +100,11 @@ extension CoinManager { func defiCoins(rawDefiCoins: [DefiCoinRaw]) -> [DefiCoin] { do { - let fullCoins = try fullCoins(coinUids: rawDefiCoins.compactMap(\.uid)) + let fullCoins = try fullCoins(coinUids: rawDefiCoins.compactMap(\.coinUid)) let dictionary = fullCoins.reduce(into: [String: FullCoin]()) { $0[$1.coin.uid] = $1 } - return rawDefiCoins.map { rawDefiCoin in - rawDefiCoin.defiCoin(fullCoin: rawDefiCoin.uid.flatMap { dictionary[$0] }) + return rawDefiCoins.map { raw in + raw.defiCoin(uid: raw.uid, fullCoin: raw.coinUid.flatMap { dictionary[$0] }) } } catch { return [] diff --git a/Sources/MarketKit/Classes/Models/DefiCoin.swift b/Sources/MarketKit/Classes/Models/DefiCoin.swift index 68e8039..6fdb191 100644 --- a/Sources/MarketKit/Classes/Models/DefiCoin.swift +++ b/Sources/MarketKit/Classes/Models/DefiCoin.swift @@ -1,6 +1,7 @@ import Foundation public struct DefiCoin { + public let uid: String public let type: DefiCoinType public let tvl: Decimal public let tvlRank: Int diff --git a/Sources/MarketKit/Classes/Models/DefiCoinRaw.swift b/Sources/MarketKit/Classes/Models/DefiCoinRaw.swift index b1f40c9..8e8e845 100644 --- a/Sources/MarketKit/Classes/Models/DefiCoinRaw.swift +++ b/Sources/MarketKit/Classes/Models/DefiCoinRaw.swift @@ -2,7 +2,8 @@ import Foundation import ObjectMapper class DefiCoinRaw: ImmutableMappable { - let uid: String? + let uid: String + let coinUid: String? let name: String let logo: String let tvl: Decimal @@ -18,7 +19,8 @@ class DefiCoinRaw: ImmutableMappable { let chainTvls: [String: Decimal] required init(map: Map) throws { - uid = try? map.value("uid") + uid = try map.value("uid") + coinUid = try? map.value("coin_uid") name = try map.value("name") logo = try map.value("logo") tvl = try map.value("tvl", using: Transform.stringToDecimalTransform) @@ -34,7 +36,7 @@ class DefiCoinRaw: ImmutableMappable { chainTvls = (try? map.value("chain_tvls", using: Transform.stringToDecimalTransform)) ?? [:] } - func defiCoin(fullCoin: FullCoin?) -> DefiCoin { + func defiCoin(uid: String, fullCoin: FullCoin?) -> DefiCoin { let type: DefiCoin.DefiCoinType if let fullCoin { @@ -44,6 +46,7 @@ class DefiCoinRaw: ImmutableMappable { } return DefiCoin( + uid: uid, type: type, tvl: tvl, tvlRank: tvlRank, diff --git a/Sources/MarketKit/Classes/Providers/HsProvider.swift b/Sources/MarketKit/Classes/Providers/HsProvider.swift index 39e2ec6..0bab262 100644 --- a/Sources/MarketKit/Classes/Providers/HsProvider.swift +++ b/Sources/MarketKit/Classes/Providers/HsProvider.swift @@ -177,7 +177,7 @@ extension HsProvider { "currency": currencyCode.lowercased(), ] - return try await networkManager.fetch(url: "\(baseUrl)/v1/defi-protocols", method: .get, parameters: parameters, headers: headers) + return try await networkManager.fetch(url: "\(baseUrl)/v1/defi-protocols/list", method: .get, parameters: parameters, headers: headers) } // Coin Categories