unigo-ruby
Unisender Go (https://go.unisender.ru) integration gem for Ruby
Installation
gem install unigo-ruby
Working with API responses
This library using faraday gem for making HTTP queries along with mashify middleware for post-processing response body. So, you can use extended syntax for accessing response fields.
Example of work with responses:
require 'unigo-ruby'
unigo = UniGo::Client.new(
hostname: 'go1.unisender.ru',
lang: 'ru',
api_key: ENV['UNIGO_API_KEY']
)
response = unigo.get_dns_records("example.com")
puts response.status
puts response.body.to_h
puts response.headers
# Access fields as hash keys or as object attributes:
puts response.body['status']
puts response.body.status
Passing API key in parameters
By default authentication sent through X-API-KEY header.
For passing API key in parameters, use:
unigo = UniGo::Client.new(
hostname: 'go1.unisender.ru',
lang: 'ru',
api_key: ENV['UNIGO_API_KEY'],
api_key_in_params: true
)
Verify webhook callback message
Will raise UniGo::Client::InvalidCallbackAuth error unless `auth’ field is correct.
unigo.verify_callback_auth!(params)
Webhook callback helper
Use it to substitute webhook handler verification and parsing to directly get list of events.
Will raise UniGo::Client::InvalidCallbackAuth error unless `auth’ field is correct.
unigo.callback_helper(params) do |events|
# [
# {
# 'event_name' => 'transactional_email_status',
# 'event_data' =>
# {
# 'email' => 'recipient.email@example.com',
# 'status' => 'sent',
# 'event_time' => '2015-11-30 15:09:42',
# ...
# }
# },
# ...
# ]
end
Handling API errors
Library using `raise-error’ middleware for handling error responses.
Example of work with errors:
require 'unigo-ruby'
begin
unigo = UniGo::Client.new(
hostname: 'go1.unisender.ru',
lang: 'ru',
api_key: ENV['UNIGO_API_KEY']
)
response = unigo.get_dns_records("example.com")
puts response.status
puts response.body.to_h
puts response.headers
rescue Faraday::Error => e
# Note that exception response has internal format which is a little
# bit different and body field is not post-processed
puts e.response[:status]
puts e.response[:body]
puts e.response[:headers]
end
HTTP timeout configuration
Pass timeout: <seconds>
parameter on creating client, default is 5.
HTTP logging
Pass enable_logging: true
parameter on creating client to enable logging, default false.
Testing
You can run tests through included test task and passing methods for test and data inside YAML config file:
rake test DOMAIN APIKEY WEBHOOK_URL FROM_EMAIL ./test/CONFIGFILE.yml