nacoma / fixer-io
A wrapper around the fixer.io currency API
Installs: 9 789
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- psr/simple-cache: ^1.0
Requires (Dev)
- cache/array-adapter: ^1.1
- guzzlehttp/guzzle: ^7.3
- mockery/mockery: ^1.4
- nyholm/psr7: ^1.4
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^5.3
- vimeo/psalm: ^4.7
README
A wrapper around Fixer.io's currency conversion rates API with minimal dependencies. Upgrading applications is always a hassle. This project aims to help relieve some of that pressure by depending exclusively on PSR interfaces instead of hard dependencies - while maintaining a comfortable API.
An additional goal of this project is to always deliver typed results. There's very little guessing about associative arrays involved when consuming this API.
Supported Endpoints
- Supported Symbols
- Latest Rates
- Historical Rates
- Convert Currency
- Time Series
- Fluctuation
Usage
use Nacoma\Fixer\ExchangeFactory; use Nacoma\Fixer\Http\Client; use Nacoma\Fixer\Http\Middleware\ETagMiddleware; $client = new Client(new Psr18Client(), [ new ETagMiddleware( new SimpleCache(), new Psr17ResponseFactory(), new Psr17StreamFactory(), ) ]); $exchangeFactory = new ExchangeFactory( $client, new Psr17RequestFactory(), new Psr17UriFactory(), 'your-access-key', ); $exchange = $exchangeFactory->create('USD', ['EUR', 'JPY']); // obtaining all rates $result = $exchange->latestRates(); // manual conversion $converted = 50 * $result->rates['EUR']; // API endpoint conversion $converted = $exchange->convert('USD', 'EUR', 50);
The optional Nacoma\Fixer\Http\Client
is a thin Psr-18 compatible wrapper around any HTTP client. It enables custom middleware
chaining in order to support caching via the ETag
header.