traxo_api
The 'traxo_api' gem is a Ruby wrapper meant to simplify the processes of both authorizing applications and creating interactions with the Traxo API.
Currently, methods for the member, accounts, and trips endpoints of Traxo's API have been implemented. More sections are hopefully soon to come.
README Contents:
Installation
Note: this gem is currently in pre-release and should have its first non-pre-release within a few days.
Add this line to your application's Gemfile:
gem 'traxo_api', '~> 0.1.0pre'
And then execute:
$ bundle
Or install it yourself as:
$ gem install traxo_api --pre
Usage
Authorization
Traxo's API uses the OAuth 2.0 standard for authorization. Additionally, Traxo enforces two later security additions: a redirect URL and a state parameter.
To gain authorization from a Traxo user, you will need to register your application with Traxo. Once registered, you will need to retrieve your your client ID and client secret from the API's website where you will also need to register a redirect url for the application.
Example of authorization controller flow
class TraxoController < ApplicationController
def auth
t = Traxo::Auth.new('CLIENT_ID', 'CLIENT_SECRET', 'REDIRECT_URL')
state = 'SOME_STRING'
redirect_to t.request_code_url(state)
end
def auth_success
t = Traxo::Auth.new('CLIENT_ID', 'CLIENT_SECRET', 'REDIRECT_URL')
# this conditional is not required, but uses CSRF protection made possible
# by Traxo's enforcement of a state parameter in authorization requests
if params[:state] == 'SOME_STRING'
code = params[:code]
response = t.exchange_request_code(code)
access_token = response[:access_token] # used to authorize requests
lifetime = response[:expires_in] # seconds until access_token expires
refresh_token = response[:refresh_token] # used to request new tokens
# store tokens (and use elsewhere for CRUD requests)...
end
end
end
CRUD
Once a user has authorized your application and you have a valid access token, you can start making CRUD (create, read, update, delete) requests to the Traxo API on their behalf.
t = Traxo::Client.new('ACCESS_TOKEN', 'CLIENT_ID', 'CLIENT_SECRET')
t.get_member # => Hash of properties for user's Traxo account
args = {
begin_datetime: '2015-06-01', # can be String or Date or Datetime
end_datetime: '2015-06-08', # can be String or Date or Datetime
destination: 'Little Rock, AR',
headline: 'Good times in the Rock',
personal: true
}
t.create_trip(args) # => Hash of properties for the user's freshly created trip
Documentation
View the documentation
Covers more in-depth usage and the public methods available within this gem.
License
Contributing
If you find a bug, please feel free to open an issue. I aim to actively maintain this project for now as I continue to work towards implementing the remaining endpoint sections.
If you would like to contribute code of your own (whether to fix a bug or to add a feature), please feel free to do the following:
- Fork it ( https://github.com/wilchandler/traxo_api/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Make sure previous tests are passing (some are currently pending from my removing features). Additional tests for new code would also be appreciated.
- Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Links
Contact Author
Website | Email | Twitter | LinkedIn | GitHub Note: the creator of this gem is not affiliated with Traxo.