osrm-backend/features/support/match.rb

48 lines
1.3 KiB
Ruby
Raw Normal View History

require 'net/http'
HOST = "http://127.0.0.1:#{OSRM_PORT}"
def request_matching trace=[], timestamps=[], options={}
defaults = { 'output' => 'json' }
2015-03-07 19:32:13 -05:00
locs = trace.compact.map { |w| "loc=#{w.lat},#{w.lon}" }
ts = timestamps.compact.map { |t| "t=#{t}" }
2015-03-07 19:32:13 -05:00
if ts.length > 0
trace_params = locs.zip(ts).map { |a| a.join('&')}
else
trace_params = locs
end
params = (trace_params + defaults.merge(options).to_param).join('&')
params = nil if params==""
2015-06-04 11:39:54 -04:00
if options.has_key?("post")
request_method = "POST"
options.delete("post")
else
request_method = "GET"
end
if request_method.eql? "GET"
uri = URI.parse ["#{HOST}/match", params].compact.join('?')
elsif request_method.eql? "POST"
uri = URI.parse "#{HOST}/match"
end
@query = uri.to_s
Timeout.timeout(OSRM_TIMEOUT) do
2015-06-04 11:39:54 -04:00
if request_method.eql? "GET"
Net::HTTP.get_response uri
elsif request_method.eql? "POST"
datas = {}
datas[:loc] = trace.compact.map { |w| "#{w.lat},#{w.lon}" }
if ts.length > 0
datas[:t] = timestamps.compact.map { |t| "#{t}" }
end
datas.merge! options
Net::HTTP.post_form uri, datas
end
end
rescue Errno::ECONNREFUSED => e
raise "*** osrm-routed is not running."
rescue Timeout::Error
raise "*** osrm-routed did not respond."
end