Module: Route4me
- Defined in:
- lib/route4me.rb,
lib/route4me/util.rb,
lib/route4me/route.rb,
lib/route4me/track.rb,
lib/route4me/version.rb,
lib/route4me/enum/avoid.rb,
lib/route4me/enum/metric.rb,
lib/route4me/enum/device_type.rb,
lib/route4me/enum/travel_mode.rb,
lib/route4me/errors/api_error.rb,
lib/route4me/enum/distance_unit.rb,
lib/route4me/enum/algorithm_type.rb,
lib/route4me/optimization_problem.rb,
lib/route4me/enum/direction_method.rb,
lib/route4me/errors/route4me_error.rb,
lib/route4me/enum/optimization_type.rb
Defined Under Namespace
Modules: AlgorithmType, Avoid, DeviceType, DirectionMethod, DistanceUnit, Metric, OptimizationType, TravelMode, Util
Classes: ApiError, OptimizationProblem, Route, Route4meError, Track
Constant Summary
collapse
- VERSION =
'1.1.0'
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.api_base ⇒ Object
Returns the value of attribute api_base.
37
38
39
|
# File 'lib/route4me.rb', line 37
def api_base
@api_base
end
|
.api_key ⇒ Object
Returns the value of attribute api_key.
37
38
39
|
# File 'lib/route4me.rb', line 37
def api_key
@api_key
end
|
Class Method Details
.api_url(url = '') ⇒ Object
42
43
44
|
# File 'lib/route4me.rb', line 42
def self.api_url(url='')
@api_base + url
end
|
.execute(attrs) ⇒ Object
91
92
93
|
# File 'lib/route4me.rb', line 91
def self.execute(attrs)
RestClient::Request.execute(attrs)
end
|
.handle_api_error(code, body) ⇒ Object
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/route4me.rb', line 109
def self.handle_api_error(code, body)
begin
error_message = JSON.parse(body)
error_message = error_message['errors']
rescue
raise Route4meError
end
raise ApiError, code, error_message
end
|
.handle_error(e) ⇒ Object
105
106
107
|
# File 'lib/route4me.rb', line 105
def self.handle_error(e)
raise Route4meError, e.message
end
|
.parse(response) ⇒ Object
95
96
97
98
99
100
101
102
103
|
# File 'lib/route4me.rb', line 95
def self.parse(response)
begin
response = JSON.parse(response.body)
rescue JSON::ParserError
response = nil
end
response
end
|
.request(method, url, opts) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/route4me.rb', line 50
def self.request(method, url, opts)
unless @api_key
raise ArgumentError.new('No API key provided.')
end
get = opts[:get] || {}
json = opts[:json] || {}
url = api_url(url)
get[:api_key] = self.api_key
url += "?#{uri_encode(get)}"
case method.to_s.downcase.to_sym
when :post, :put
payload = json.to_json if json && json.any?
else
payload = nil
end
request_opts = {
method: method, open_timeout: 30, url: url,
timeout: 80, payload: payload
}
begin
response = execute(request_opts)
rescue SocketError => e
handle_error(e)
rescue RestClient::ExceptionWithResponse => e
if rcode = e.http_code and rbody = e.http_body
handle_api_error(rcode, rbody)
else
handle_error(e)
end
rescue RestClient::Exception, Errno::ECONNREFUSED => e
handle_error(e)
end
Util.symbolize_names(parse(response))
end
|
.uri_encode(params) ⇒ Object
46
47
48
|
# File 'lib/route4me.rb', line 46
def self.uri_encode(params)
params.map{ |k,v| "#{k}=#{Util.url_encode(v)}" }.join('&')
end
|