new appraoch
This commit is contained in:
47
pancake/system/vendor/moneyphp/money/src/Exchange/ExchangerExchange.php
vendored
Executable file
47
pancake/system/vendor/moneyphp/money/src/Exchange/ExchangerExchange.php
vendored
Executable file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Money\Exchange;
|
||||
|
||||
use Exchanger\Contract\ExchangeRateProvider;
|
||||
use Exchanger\CurrencyPair as ExchangerCurrencyPair;
|
||||
use Exchanger\Exception\Exception as ExchangerException;
|
||||
use Exchanger\ExchangeRateQuery;
|
||||
use Money\Currency;
|
||||
use Money\CurrencyPair;
|
||||
use Money\Exception\UnresolvableCurrencyPairException;
|
||||
use Money\Exchange;
|
||||
|
||||
/**
|
||||
* Provides a way to get exchange rate from a third-party source and return a currency pair.
|
||||
*
|
||||
* @author Maksim (Ellrion) Platonov <ellrion11@gmail.com>
|
||||
*/
|
||||
final class ExchangerExchange implements Exchange
|
||||
{
|
||||
/**
|
||||
* @var ExchangeRateProvider
|
||||
*/
|
||||
private $exchanger;
|
||||
|
||||
public function __construct(ExchangeRateProvider $exchanger)
|
||||
{
|
||||
$this->exchanger = $exchanger;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function quote(Currency $baseCurrency, Currency $counterCurrency)
|
||||
{
|
||||
try {
|
||||
$query = new ExchangeRateQuery(
|
||||
new ExchangerCurrencyPair($baseCurrency->getCode(), $counterCurrency->getCode())
|
||||
);
|
||||
$rate = $this->exchanger->getExchangeRate($query);
|
||||
} catch (ExchangerException $e) {
|
||||
throw UnresolvableCurrencyPairException::createFromCurrencies($baseCurrency, $counterCurrency);
|
||||
}
|
||||
|
||||
return new CurrencyPair($baseCurrency, $counterCurrency, $rate->getValue());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user