traxo_api 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -6
- data/lib/traxo/client.rb +22 -14
- data/lib/traxo/endpoints/segments/air.rb +71 -0
- data/lib/traxo/version.rb +1 -1
- data/lib/traxo_api.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 908a877bad2c37d81e3118ca0d6003a4038e2e81
|
4
|
+
data.tar.gz: bce5e411c6ff950ef7a3580f1685a9128d1e0a89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3f60c2f38a6c85d1f709815f1a83711c4927b16f8e732b7bcfd81b10593b26b1d2d1b2ef9ab8f2cd8374e5e0af9214d8ba7b244750b1c89052b6fe346cbe687
|
7
|
+
data.tar.gz: a411f7746280f1142861a8de5fdbfa464d3b8a650ef5bf07016dd136794b22feee6d033d4bbe71fbbdc4e6c7621071faaf50e790d06da95beede76f767769090
|
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
#traxo_api
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/traxo_api.svg)](http://badge.fury.io/rb/traxo_api)
|
4
|
+
|
3
5
|
The 'traxo_api' gem is a Ruby wrapper meant to simplify the processes of both authorizing applications and creating interactions with the [Traxo API](https://developer.traxo.com).
|
4
6
|
|
5
|
-
Currently, methods for the
|
7
|
+
Currently, methods for the __member__, __accounts__, __trips__, and __air segments__ endpoints of Traxo's API have been implemented. More sections are hopefully soon to come.
|
6
8
|
|
7
9
|
###README Contents:
|
8
10
|
- [Installation](#toc-installation)
|
@@ -18,12 +20,10 @@ Currently, methods for the _member_, _accounts_, and _trips_ endpoints of Traxo'
|
|
18
20
|
<a name="toc-installation"></a>
|
19
21
|
##Installation
|
20
22
|
|
21
|
-
_Note: this gem is currently in pre-release and should have its first non-pre-release within a few days_.
|
22
|
-
|
23
23
|
Add this line to your application's Gemfile:
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
gem 'traxo_api'
|
26
|
+
gem 'traxo_api'
|
27
27
|
```
|
28
28
|
|
29
29
|
And then execute:
|
@@ -32,7 +32,7 @@ And then execute:
|
|
32
32
|
|
33
33
|
Or install it yourself as:
|
34
34
|
|
35
|
-
$ gem install traxo_api
|
35
|
+
$ gem install traxo_api
|
36
36
|
|
37
37
|
<a name="toc-usage"></a>
|
38
38
|
##Usage
|
@@ -43,6 +43,8 @@ Traxo's API uses the OAuth 2.0 standard for authorization. Additionally, Traxo e
|
|
43
43
|
|
44
44
|
To gain authorization from a Traxo user, you will need to [register your application](https://developer.traxo.com/signup) 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.
|
45
45
|
|
46
|
+
See the [__authorization documentation__](https://github.com/wilchandler/traxo_api/wiki/Authorization) for a list and detailing of available authorization methods.
|
47
|
+
|
46
48
|
####Example of authorization controller flow
|
47
49
|
```ruby
|
48
50
|
class TraxoController < ApplicationController
|
@@ -77,8 +79,11 @@ end
|
|
77
79
|
|
78
80
|
<a name="toc-crud"></a>
|
79
81
|
###CRUD
|
80
|
-
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.
|
82
|
+
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. There are a multiple response formats available, and http errors/failures can be configured to be _raise exceptions_ (default), _ignored_, or to _return false_ for the CRUD method being called.
|
83
|
+
|
84
|
+
See the [__endpoint documentation__](https://github.com/wilchandler/traxo_api/wiki/Client-for-Endpoints) for response formatting and error handling. Individual endpoint methods are also detailed in the documentation.
|
81
85
|
|
86
|
+
####Example of getting user's Traxo details and creating a trip
|
82
87
|
```ruby
|
83
88
|
t = Traxo::Client.new('ACCESS_TOKEN', 'CLIENT_ID', 'CLIENT_SECRET')
|
84
89
|
t.get_member # => Hash of properties for user's Traxo account
|
data/lib/traxo/client.rb
CHANGED
@@ -2,7 +2,7 @@ module Traxo
|
|
2
2
|
|
3
3
|
class Client
|
4
4
|
attr_accessor :access_token
|
5
|
-
attr_reader :response_format, :
|
5
|
+
attr_reader :response_format, :error_handling
|
6
6
|
|
7
7
|
API_URL = "https://api.traxo.com/v2/"
|
8
8
|
|
@@ -44,12 +44,17 @@ module Traxo
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def ignore_http_errors!
|
47
|
-
@
|
47
|
+
@error_handling = :ignore
|
48
48
|
self
|
49
49
|
end
|
50
50
|
|
51
51
|
def raise_http_errors!
|
52
|
-
@
|
52
|
+
@error_handling = :raise
|
53
|
+
self
|
54
|
+
end
|
55
|
+
|
56
|
+
def return_false_if_http_errors!
|
57
|
+
@error_handling = :bool
|
53
58
|
self
|
54
59
|
end
|
55
60
|
|
@@ -76,14 +81,15 @@ module Traxo
|
|
76
81
|
|
77
82
|
def assign_error_handling(action)
|
78
83
|
if action
|
79
|
-
if [:raise, :ignore].include? action
|
84
|
+
if [:raise, :ignore, :bool].include? action
|
80
85
|
raise_http_errors! if action == :raise
|
81
86
|
ignore_http_errors! if action == :ignore
|
87
|
+
return_false_if_http_errors! if action == :bool
|
82
88
|
else
|
83
89
|
raise ArgumentError.new(':errors parameter must be either :raise or :ignore')
|
84
90
|
end
|
85
91
|
else
|
86
|
-
|
92
|
+
ignore_http_errors!
|
87
93
|
end
|
88
94
|
end
|
89
95
|
|
@@ -129,7 +135,7 @@ module Traxo
|
|
129
135
|
request = Net::HTTP::Delete.new(uri)
|
130
136
|
attach_token(request)
|
131
137
|
response = make_http_request(uri) { |http| http.request(request) }
|
132
|
-
|
138
|
+
format_response(response)
|
133
139
|
end
|
134
140
|
|
135
141
|
def query_string(data = {})
|
@@ -146,7 +152,6 @@ module Traxo
|
|
146
152
|
end
|
147
153
|
|
148
154
|
def convert_time(time)
|
149
|
-
time = time.dup
|
150
155
|
if time.is_a? String
|
151
156
|
begin
|
152
157
|
time = Time.parse(time)
|
@@ -160,7 +165,7 @@ module Traxo
|
|
160
165
|
end
|
161
166
|
|
162
167
|
def format_response(response)
|
163
|
-
return false unless
|
168
|
+
return false unless check_success(response)
|
164
169
|
|
165
170
|
case @response_format
|
166
171
|
when :http
|
@@ -175,18 +180,21 @@ module Traxo
|
|
175
180
|
response.header.each { |key| headers[key.to_sym] = response[key] }
|
176
181
|
headers
|
177
182
|
when :headers_string
|
178
|
-
|
183
|
+
headers = {}
|
184
|
+
response.header.each { |key| headers[key.to_sym] = response[key] }
|
185
|
+
headers.to_json
|
179
186
|
when :code
|
180
187
|
response.code.to_i
|
181
188
|
end
|
182
189
|
end
|
183
190
|
|
184
|
-
def
|
185
|
-
if @
|
186
|
-
response.value || response
|
187
|
-
|
188
|
-
response
|
191
|
+
def check_success(response)
|
192
|
+
if @error_handling == :raise
|
193
|
+
return response.value || response
|
194
|
+
elsif @error_handling == :ignore
|
195
|
+
return response
|
189
196
|
end
|
197
|
+
response.code <= '300'
|
190
198
|
end
|
191
199
|
end
|
192
200
|
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Traxo
|
2
|
+
|
3
|
+
class Client
|
4
|
+
def get_air_segments(args = {})
|
5
|
+
query = get_air_segments_options(args)
|
6
|
+
url = "#{API_URL}segments/air#{ query_string(query) }"
|
7
|
+
get_request_with_token(url)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get_air_segment(id)
|
11
|
+
url = "#{ API_URL}segments/air/#{id}"
|
12
|
+
get_request_with_token(url)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_air_segment(args)
|
16
|
+
url = "#{ API_URL}segments/air"
|
17
|
+
data = create_air_segment_options(args)
|
18
|
+
post_request_with_token(url, data)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update_air_segment(id, args)
|
22
|
+
url = "#{ API_URL}segments/air/#{id}"
|
23
|
+
data = create_air_segment_options(args, false)
|
24
|
+
data.delete_if { |key, val| !val } # previous datetime filtering is skipped
|
25
|
+
raise ArgumentError.new('Must provide options to update segment') if data.empty?
|
26
|
+
put_request_with_token(url, data)
|
27
|
+
end
|
28
|
+
|
29
|
+
def delete_air_segment(id)
|
30
|
+
url = "#{ API_URL}segments/air/#{id}"
|
31
|
+
delete_request_with_token(url)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def get_air_segments_options(args)
|
37
|
+
unless args.empty?
|
38
|
+
args = args.dup
|
39
|
+
options = [:start, :status, :end]
|
40
|
+
args.select! { |key| options.include? key }
|
41
|
+
end
|
42
|
+
args = {start: 'today'}.merge(args)
|
43
|
+
args[:start] = convert_time(args[:start]) unless args[:start] == 'today'
|
44
|
+
if args[:end] && args[:end] != 'today'
|
45
|
+
args[:end] = convert_time(args[:end])
|
46
|
+
end
|
47
|
+
args
|
48
|
+
end
|
49
|
+
|
50
|
+
def create_air_segment_options(args, enforce_required = true)
|
51
|
+
args = args.dup
|
52
|
+
args[:departure_datetime] = convert_time args[:departure_datetime]
|
53
|
+
args[:arrival_datetime] = convert_time args[:arrival_datetime]
|
54
|
+
create_air_segment_required_params(args) if enforce_required
|
55
|
+
options = [ :trip_id, :origin, :destination, :departure_datetime,
|
56
|
+
:arrival_datetime, :airline, :flight_num, :seat_assignment,
|
57
|
+
:confirmation_no, :number_of_pax, :price, :currency, :phone,
|
58
|
+
:first_name, :last_name ]
|
59
|
+
args.keep_if { |key| options.include? key }
|
60
|
+
end
|
61
|
+
|
62
|
+
def create_air_segment_required_params(args)
|
63
|
+
required = [:trip_id, :origin, :destination, :departure_datetime,
|
64
|
+
:arrival_datetime, :airline, :flight_num]
|
65
|
+
required.each do |arg|
|
66
|
+
raise ArgumentError.new("#{arg} is a required argument key") unless args[arg]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
data/lib/traxo/version.rb
CHANGED
data/lib/traxo_api.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traxo_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wil Chandler
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- lib/traxo/client.rb
|
89
89
|
- lib/traxo/endpoints/accounts.rb
|
90
90
|
- lib/traxo/endpoints/member.rb
|
91
|
+
- lib/traxo/endpoints/segments/air.rb
|
91
92
|
- lib/traxo/endpoints/trips.rb
|
92
93
|
- lib/traxo/version.rb
|
93
94
|
- lib/traxo_api.rb
|