CloudCastle CurrencyConverter

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
Где стоит символ валюты относительно числа.
On this page

Search results