diff --git a/Sources/MarketKit/Classes/Kit.swift b/Sources/MarketKit/Classes/Kit.swift index 57c2ff6..6261e94 100644 --- a/Sources/MarketKit/Classes/Kit.swift +++ b/Sources/MarketKit/Classes/Kit.swift @@ -412,6 +412,10 @@ public extension Kit { // Overview + func marketGlobal(currencyCode: String) async throws -> MarketGlobal { + try await hsProvider.marketGlobal(currencyCode: currencyCode) + } + func marketOverview(currencyCode: String) async throws -> MarketOverview { try await marketOverviewManager.marketOverview(currencyCode: currencyCode) } diff --git a/Sources/MarketKit/Classes/Models/MarketGlobal.swift b/Sources/MarketKit/Classes/Models/MarketGlobal.swift new file mode 100644 index 0000000..327b59e --- /dev/null +++ b/Sources/MarketKit/Classes/Models/MarketGlobal.swift @@ -0,0 +1,32 @@ +import Foundation +import ObjectMapper + +public struct MarketGlobal: ImmutableMappable { + public let marketCap: Decimal? + public let marketCapChange: Decimal? + public let defiMarketCap: Decimal? + public let defiMarketCapChange: Decimal? + public let volume: Decimal? + public let volumeChange: Decimal? + public let btcDominance: Decimal? + public let btcDominanceChange: Decimal? + public let tvl: Decimal? + public let tvlChange: Decimal? + public let etfTotalInflow: Decimal? + public let etfDailyInflow: Decimal? + + public init(map: Map) throws { + marketCap = try? map.value("market_cap", using: Transform.stringToDecimalTransform) + marketCapChange = try? map.value("market_cap_change", using: Transform.stringToDecimalTransform) + defiMarketCap = try? map.value("defi_market_cap", using: Transform.stringToDecimalTransform) + defiMarketCapChange = try? map.value("defi_market_cap_change", using: Transform.stringToDecimalTransform) + volume = try? map.value("volume", using: Transform.stringToDecimalTransform) + volumeChange = try? map.value("volume_change", using: Transform.stringToDecimalTransform) + btcDominance = try? map.value("btc_dominance", using: Transform.stringToDecimalTransform) + btcDominanceChange = try? map.value("btc_dominance_change", using: Transform.stringToDecimalTransform) + tvl = try? map.value("tvl", using: Transform.stringToDecimalTransform) + tvlChange = try? map.value("tvl_change", using: Transform.stringToDecimalTransform) + etfTotalInflow = try? map.value("etf_total_inflow", using: Transform.stringToDecimalTransform) + etfDailyInflow = try? map.value("etf_daily_inflow", using: Transform.stringToDecimalTransform) + } +} diff --git a/Sources/MarketKit/Classes/Providers/HsProvider.swift b/Sources/MarketKit/Classes/Providers/HsProvider.swift index 6ab039e..39e2ec6 100644 --- a/Sources/MarketKit/Classes/Providers/HsProvider.swift +++ b/Sources/MarketKit/Classes/Providers/HsProvider.swift @@ -38,6 +38,14 @@ class HsProvider { } extension HsProvider { + func marketGlobal(currencyCode: String) async throws -> MarketGlobal { + let parameters: Parameters = [ + "currency": currencyCode.lowercased(), + ] + + return try await networkManager.fetch(url: "\(baseUrl)/v1/markets/overview-simple", method: .get, parameters: parameters, headers: headers) + } + func marketOverview(currencyCode: String) async throws -> MarketOverviewResponse { let parameters: Parameters = [ "simplified": true, @@ -54,9 +62,7 @@ extension HsProvider { return try await networkManager.fetch(url: "\(baseUrl)/v1/coins/top-movers", method: .get, parameters: parameters, headers: headers) } -} -extension HsProvider { // Status func status() async throws -> HsStatus {