bestchange-api
bestchange-api is a simple library for getting data from Bestchange aggregator
Installation
Add this line to your application’s Gemfile:
ruby
gem 'bestchange-api'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install bestchange-api
Usage
info.zip
```ruby require ‘bestchange’
api_client = Bestchange::Api.new response = api_client.request # this will call api.bestchange.ru/info.zip by default archive = Bestchange::ZipBuilder.new(response.body).call tempfile = Bestchange::ZipExtractor.new(archive).call(‘bm_rates.dat’) ```
NOTE: Do not forget to close and unlink files at the end
ruby
archive.close
tempfile.close
Using blocks
The Bestchange::ZipBuilder and Bestchange::ZipExtractor classes support using blocks to ensure that tempfiles are closed automatically. This is useful when you want to avoid manual file management and prevent possible leaks
```ruby
response = Bestchange::Api.new.request
Bestchange::ZipBuilder.new(response.body).call do |archive| # Work with archive here # archive will be closed automatically when the block finishes Bestchange::ZipExtractor.new(archive).call(‘bm_rates.dat’) do |bm_rates| # Work with bm_rates here # bm_rates will be closed automatically when the block finishes end end ```
Custom connection
You can pass your own http connection object while initializing an api client. This can be useful if you want to set custom timeouts, for example ```ruby require ‘bestchange’
uri = URI(Bestchange::Api::BASE_URI) conn = Net::HTTP.new(uri.host, uri.port) conn.open_timeout = 5 conn.read_timeout = 10 api_client = Bestchange::Api.new(conn) ```
Custom request
You can provide your own http request object to the #request method
```ruby
require ‘bestchange’
request = Net::HTTP::Head.new(URI(Bestchange::Api::BASE_URI)) response = api_client.request(request) created_at = response[‘Date’] ```
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the bestchange-api project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.