34 lines
975 B
Ruby
34 lines
975 B
Ruby
require 'net/http'
|
|
|
|
# Converts an array [["param","val1"], ["param","val2"]] into param=val1¶m=val2
|
|
def params_to_string params
|
|
kv_pairs = params.map { |kv| kv[0].to_s + "=" + kv[1].to_s }
|
|
url = kv_pairs.size > 0 ? kv_pairs.join("&") : ""
|
|
return url
|
|
end
|
|
|
|
def send_request base_uri, parameters
|
|
Timeout.timeout(OSRM_TIMEOUT) do
|
|
uri_string = base_uri
|
|
params = params_to_string(parameters)
|
|
if not params.eql? ""
|
|
uri_string = uri_string + "?" + params
|
|
end
|
|
uri = URI.parse(uri_string)
|
|
@query = uri.to_s
|
|
if @http_method.eql? "POST"
|
|
Net::HTTP.start(uri.hostname, uri.port) do |http|
|
|
req = Net::HTTP::Post.new(uri.path)
|
|
req.body = params_to_string parameters
|
|
response = http.request(req)
|
|
end
|
|
else
|
|
response = Net::HTTP.get_response uri
|
|
end
|
|
end
|
|
rescue Errno::ECONNREFUSED => e
|
|
raise "*** osrm-routed is not running."
|
|
rescue Timeout::Error
|
|
raise "*** osrm-routed did not respond."
|
|
end
|