Application
Table of Contents
Interfaces
- FeedParser
- Разбор тела фида в таблицу курсов.
- RateProvider
- Источник курса для пары валют.
Classes
- BatchConverter
- Пакетная конвертация ленивым генератором: в памяти только текущая сумма.
- Converter
- Конвертация суммы по курсу и отдельный путь округления до шага наличных.
- Currency
- Валюта ISO 4217: буквенный код, цифровой номер, минорные единицы и шаг наличных.
- CurrencyCatalog
- Справочник ISO 4217. По умолчанию читает data/iso4217.csv, исторические коды подгружаются отдельно.
- CurrencyNames
- Дополнительные названия валют по локали. Нет перевода — английское имя из справочника.
- CurrencyPair
- Пара валют и необязательная дата курса (исторический срез).
- DateGuard
- Проверка календарной даты ISO (YYYY-MM-DD) без обращений к статическим часам.
- DecimalRate
- Разбор десятичной записи курса («1.0850», «2», «.5») в дробь.
- CurrencyMismatchException
- Арифметика над суммами в разных валютах без конвертации.
- InvalidAmountException
- Сумма, масштаб или арифметика вышли за допустимые границы.
- InvalidCurrencyDataException
- Строка справочника валют не разобрана.
- InvalidRateException
- Курс, дата или параметр провайдера заданы неверно.
- MissingRateException
- Провайдер не нашёл курс для пары.
- RateSignatureException
- HMAC-подпись снимка курсов не совпала. Ключ в сообщение не попадает.
- UnknownCurrencyException
- Код или цифровой номер отсутствуют в загруженном справочнике.
- UnsafeSourceException
- Источник курса не прошёл проверку (XXE, схема URL, хост вне списка).
- ExchangeRate
- Курс как несократимая дробь числитель/знаменатель. Float не используется.
- FeeCalculator
- Комиссия в базисных пунктах, добавляемая к сумме.
- FeedLoader
- Загрузка фида по URL: адрес проверяется до сети, транспорт передаёт вызывающий код.
- IntegerMath
- Целочисленная арифметика без float: переполнение ловится, деление округляется явно.
- LocaleFormats
- Готовые правила записи суммы для распространённых локалей.
- LocaleFormatter
- Формат суммы по правилам локали: десятичный знак, разделитель разрядов и место символа.
- Money
- Неизменяемая сумма в минорных единицах валюты (центы, копейки, йены).
- MoneyAggregate
- Сводные операции над списком сумм одной валюты: минимум, максимум, сумма, среднее, остаток.
- MoneyAllocator
- Распределение суммы по целочисленным долям без потери минорной единицы.
- MoneyArithmetic
- Арифметика сумм одной валюты: сложение, умножение, сравнение, модуль.
- MoneyBag
- Мультивалютная корзина: суммы копятся по валютам, итог считается в одной валюте.
- MoneyFormatter
- Текстовое представление суммы: символ, код ISO и группировка разрядов.
- MoneyParser
- Разбор суммы из десятичной записи основной единицы («10.50», «-1», «100» для йены).
- CbrRateParser
- Разбор XML Банка России: курс рубля за Nominal единиц валюты, запятая как разделитель.
- EcbRateParser
- Разбор суточного XML Европейского центробанка (курсы к евро) без libxml.
- FeedParsers
- Готовые парсеры ответов сервисов курсов; имена совпадают с реестром florianv/swap.
- JsonRateParser
- Разбор JSON вида Frankfurter: {"base":"EUR","rates":{"USD":1.08}}.
- MapRateParser
- Разбор JSON со словарём курсов: {"base":"EUR","rates":{...}} и родственные форматы.
- RecordFields
- Нарезка фида на записи и чтение поля записи для XML, JSON и текста.
- RecordFormat
- Описание записи фида: где код валюты, курс, номинал и валюта котировки.
- RecordRateParser
- Разбор фида из однотипных записей: курс одной единицы базы в валюте котировки.
- SingleRateParser
- Ответ из одного числа для заранее известной пары (`<double>0.9</double>` у WebserviceX).
- ArrayRateProvider
- Таблица курсов в памяти. Ключ — пара и дата.
- CachedRateProvider
- Кэш курсов с ограничением числа записей: самая старая вытесняется.
- ChainRateProvider
- Цепочка провайдеров: первый успешный ответ побеждает.
- HistoricalRateProvider
- Исторические срезы: на каждую дату свой провайдер. Дата в паре обязательна.
- InverseRateProvider
- Если прямого курса нет, берёт обратную пару и переворачивает дробь.
- MarkupRateProvider
- Наценка в базисных пунктах поверх курса внутреннего провайдера.
- PdoRateProvider
- Курсы из таблицы БД: base, quote, rate_date, numerator, denominator.
- ResolvingRateProvider
- Порядок поиска: та же валюта, прямой курс, обратный, кросс через опору.
- TriangulationRateProvider
- Кросс-курс через валюту-опору, если прямой пары нет в базовом провайдере.
- TtlRateProvider
- Кэш с временем жизни. Часы передаются замыканием now(): int, чтобы не тащить внешний пакет.
- QuotientRounding
- Округление неполного частного. Вынесено из IntegerMath, чтобы удержать сложность класса.
- RateQuote
- Двусторонний курс: bid, ask и середина спреда в базисных пунктах.
- RateVerifier
- HMAC-SHA256 снимка курсов. Сравнение подписи — hash_equals (CWE-208).
- SourceGuard
- Отсекает XXE-конструкции в тексте фида и посторонние URL источников курса.
Enums
- CurrencyStatus
- Статус записи справочника ISO 4217: действующая или выведенная из обращения.
- MapKey
- Что означает ключ в словаре курсов JSON.
- RecordKind
- Чем является одна запись фида: XML-элемент, JSON-объект или строка текста.
- RoundingMode
- Режим округления денежной суммы при делении и конвертации.
- SymbolPosition
- Где стоит символ валюты относительно числа.