submarine / nbrb-exchange-rates-bundle
Парсер официальных курсов валют Национального банка Республики Беларусь
Installs: 59
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 2
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^5.0|^6.0
Requires (Dev)
- phpunit/phpunit: ^5.2
README
Парсер официальных курсов валют Национального банка Республики Беларусь (Источник данных)
Возможности:
- Получение курсов валют по коду валюты (UAH, USD).
- Получение динамики официального курса белорусского рубля к заданной валюте периодом не более чем за 365 дней.
- Все данные обернуты в объекты
- Кэширование данных (файловый кэш)
Установка
composer.json:
{ "require": { "submarine/nbrb-exchange-rates-bundle": "^0.3" } }
Регистрация бандла:
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Submarine\NbrbExchangeRatesBundle\SubmarineNbrbExchangeRatesBundle(), ); // ... }
Конфигурация config.yml
# Значения по умолчанию submarine_nbrb_exchange_rates: source: # Урлы xml-данных url_exchange_rates: 'http://www.nbrb.by/Services/XmlExRates.aspx' url_exchange_rates_dynamic: 'http://www.nbrb.by/Services/XmlExRatesDyn.aspx' connect_timeout: 3 # Ожидание подключения к сервису, сек (default: 3) timeout: 3 # Ожидание ответа сервера, сек (default: 3) exception: false # Выкидывать исключения? (default: false)
Использование
Получение текущего курса
$data = $container->get('nbrb_exchange_rates.provider') ->getRateExchange('USD', new \DateTime()); //За текущую дату
Несколько валют:
$provider = $container->get('nbrb_exchange_rates.provider'); // Выбранные валюты $data = $provider->getRatesExchanges(['UAH', 'USD', 'EUR'], new \DateTime()); // Все валюты $data = $provider->getAllRatesExchanges(new \DateTime()); // Одна валюта $rate = $provider->getRateExchange('USD', new \DateTime('2014-01-01'));
Динамика изменения курса
Период не более чем за 365 дней.
$container->get('nbrb_exchange_rates.provider') ->getRatesExchangesDynamic( 'USD', new \DateTime('2014-01-01'), new \DateTime('2014-05-01') );
Кэширование
Можно воспользоваться декоратором CachedExchangeRateProvider
в своем приложении.
Кэш-провайдер должен реализовывать интерефейс Doctrine\Common\Cache\Cache
(смотрите doctrine/cache
).
Пример конфигурации services.yml
:
services: my_nbrb_exchange_rates_cached: class: Submarine\NbrbExchangeRatesBundle\Provider\CachedExchangeRateProvider arguments: - '@nbrb_exchange_rates.provider' - '@cache_filesystem' - 10800 cache_filesystem: class: Doctrine\Common\Cache\FilesystemCache arguments: ['%kernel.cache_dir%/file']
$provider = $container->get('my_nbrb_exchange_rates_cached'); // Выбранные валюты $data = $provider->getRatesExchanges(['UAH', 'USD', 'EUR'], new \DateTime());