aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tom_tom
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tom_tom')
-rw-r--r--lib/tom_tom/matrix.rb12
-rw-r--r--lib/tom_tom/matrix/request_json_serializer.rb25
2 files changed, 33 insertions, 4 deletions
diff --git a/lib/tom_tom/matrix.rb b/lib/tom_tom/matrix.rb
index 49c000148..71eb6c75d 100644
--- a/lib/tom_tom/matrix.rb
+++ b/lib/tom_tom/matrix.rb
@@ -15,10 +15,7 @@ module TomTom
req.params[:routeType] = 'shortest'
req.params[:travelMode] = 'bus'
- req.body = {
- origins: points,
- destinations: points
- }.to_json
+ req.body = build_request_body(points)
end
extract_costs_to_way_costs!(
@@ -69,6 +66,13 @@ module TomTom
end
end
+ def build_request_body(points)
+ RequestJSONSerializer.dump({
+ origins: points,
+ destinations: points
+ })
+ end
+
def extract_costs_to_way_costs!(way_costs, points, matrix_json)
way_costs = []
diff --git a/lib/tom_tom/matrix/request_json_serializer.rb b/lib/tom_tom/matrix/request_json_serializer.rb
new file mode 100644
index 000000000..f4d12e482
--- /dev/null
+++ b/lib/tom_tom/matrix/request_json_serializer.rb
@@ -0,0 +1,25 @@
+module TomTom
+ class Matrix
+ class RequestJSONSerializer
+ def self.dump(hash)
+ hash[:origins].map! do |point|
+ point_to_f(point)
+ end
+ hash[:destinations].map! do |point|
+ point_to_f(point)
+ end
+
+ JSON.dump(hash)
+ end
+
+ private
+
+ def self.point_to_f(point)
+ point[:point][:latitude] = point[:point][:latitude].to_f
+ point[:point][:longitude] = point[:point][:longitude].to_f
+
+ point
+ end
+ end
+ end
+end