feat: v2
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import Foundation
|
||||
|
||||
/// Сводка по торговой паре из `GET /market/symbol-thumb`.
|
||||
///
|
||||
/// Нюанс нейминга: API Rapira меняет местами base и quote относительно
|
||||
/// привычной терминологии — для пары "BTC/USDT" `quoteCurrency == "BTC"`
|
||||
/// (монета), а `baseCurrency == "USDT"` (валюта, в которой выражена цена).
|
||||
struct SymbolThumb: Codable, Identifiable, Sendable {
|
||||
var id: String { symbol }
|
||||
|
||||
let symbol: String
|
||||
let open: Double
|
||||
let high: Double
|
||||
let low: Double
|
||||
let close: Double
|
||||
/// Относительное изменение за 24ч (0.0234 == +2.34%).
|
||||
let chg: Double
|
||||
/// Абсолютное изменение за 24ч в валюте цены.
|
||||
let change: Double
|
||||
let volume: Double
|
||||
let turnover: Double
|
||||
let quoteCurrencyName: String
|
||||
let baseCurrency: String
|
||||
let quoteCurrency: String
|
||||
}
|
||||
|
||||
// MARK: - Представление
|
||||
|
||||
extension SymbolThumb {
|
||||
var isPositive: Bool { chg >= 0 }
|
||||
|
||||
/// «70 324,00»
|
||||
var priceFormatted: String { MarketFormatting.price(close) }
|
||||
|
||||
/// «+2.34%»
|
||||
var changePercent: String { MarketFormatting.percent(chg, signed: true) }
|
||||
|
||||
/// «2.34%» — без знака, когда знак уже несёт соседнее значение.
|
||||
var changePercentPlain: String { MarketFormatting.percent(abs(chg), signed: false) }
|
||||
|
||||
/// «+1 676,00 USDT»
|
||||
var changeFormatted: String { "\(MarketFormatting.signedAmount(change)) \(baseSymbol)" }
|
||||
|
||||
/// Символ валюты цены: ₽ вместо RUB и т.п.
|
||||
var baseSymbol: String {
|
||||
switch baseCurrency {
|
||||
case "RUB": "₽"
|
||||
case "USD": "$"
|
||||
case "EUR": "€"
|
||||
default: baseCurrency
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user