aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/tom_tom.rb36
-rw-r--r--spec/lib/tom_tom_spec.rb19
2 files changed, 55 insertions, 0 deletions
diff --git a/lib/tom_tom.rb b/lib/tom_tom.rb
index 4a6a58df0..a2ebeb1a8 100644
--- a/lib/tom_tom.rb
+++ b/lib/tom_tom.rb
@@ -14,6 +14,19 @@ class TomTom
end
end
+ def calculate_route(way_costs)
+ params = URI.encode_www_form({
+ travelMode: 'bus',
+ routeType: 'shortest'
+ })
+ locations = convert_way_costs_for_calculate_route(way_costs)
+
+ response = @connection.post do |req|
+ req.url "/routing/1/calculateRoute/#{locations}/json?#{params}"
+ req.headers['Content-Type'] = 'application/json'
+ end
+ end
+
def batch(way_costs)
params = URI.encode_www_form({
travelMode: 'bus',
@@ -32,6 +45,16 @@ class TomTom
batchItems: batch_items
}.to_json
end
+
+ response = JSON.parse(response.body)
+
+ calculated_routes = response['batchItems']
+
+ calculated_routes.each do |route|
+ next if route['statusCode'] != 200
+
+ distance = route['response']['routes']
+ end
end
def convert_way_costs_for_batch(way_costs)
@@ -40,4 +63,17 @@ class TomTom
":#{way_cost.arrival.lat},#{way_cost.arrival.lng}"
end
end
+
+ def convert_way_costs_for_calculate_route(way_costs)
+ coordinates = []
+
+ way_costs.map do |way_cost|
+ coordinates << "#{way_cost.departure.lat},#{way_cost.departure.lng}"
+ coordinates << "#{way_cost.arrival.lat},#{way_cost.arrival.lng}"
+ end
+
+ coordinates
+ .uniq
+ .join(':')
+ end
end
diff --git a/spec/lib/tom_tom_spec.rb b/spec/lib/tom_tom_spec.rb
index 57f22d26a..c6d387b9f 100644
--- a/spec/lib/tom_tom_spec.rb
+++ b/spec/lib/tom_tom_spec.rb
@@ -22,4 +22,23 @@ RSpec.describe TomTom do
])
end
end
+
+ describe "#convert_way_costs_for_calculate_route" do
+ it "turns WayCost points into a string of colon-separated coordinates" do
+ way_costs = [
+ WayCost.new(
+ departure: Geokit::LatLng.new(48, 2),
+ arrival: Geokit::LatLng.new(46, 3)
+ ),
+ WayCost.new(
+ departure: Geokit::LatLng.new(46, 3),
+ arrival: Geokit::LatLng.new(47.2, 3.9)
+ )
+ ]
+
+ expect(
+ tomtom.convert_way_costs_for_calculate_route(way_costs)
+ ).to eq('48,2:46,3:47.2,3.9')
+ end
+ end
end