aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAlban Peignier2018-05-16 15:42:24 +0200
committerGitHub2018-05-16 15:42:24 +0200
commit223d988ef59e562b201cac8391c397630c8953e5 (patch)
treeecb43cdf1e461e621f8e5c22c5e5fdc2cd70b18d /lib
parent6f4d2a1954fa3b127785127e30f757f654fe20c7 (diff)
parent9c442cd66c7d12266ba53e85949f775f6b842d2d (diff)
downloadchouette-core-223d988ef59e562b201cac8391c397630c8953e5.tar.bz2
Merge pull request #553 from af83/6884-tomtom-matrix--handle-error-when-response-doesn,t-inclu
Handle API error(s) in Tomtom matrix. Fixes #6884
Diffstat (limited to 'lib')
-rw-r--r--lib/tom_tom/errors.rb4
-rw-r--r--lib/tom_tom/errors/matrix_remote_error.rb5
-rw-r--r--lib/tom_tom/matrix.rb20
3 files changed, 29 insertions, 0 deletions
diff --git a/lib/tom_tom/errors.rb b/lib/tom_tom/errors.rb
new file mode 100644
index 000000000..da3f2239c
--- /dev/null
+++ b/lib/tom_tom/errors.rb
@@ -0,0 +1,4 @@
+module TomTom
+ module Errors
+ end
+end
diff --git a/lib/tom_tom/errors/matrix_remote_error.rb b/lib/tom_tom/errors/matrix_remote_error.rb
new file mode 100644
index 000000000..b13767847
--- /dev/null
+++ b/lib/tom_tom/errors/matrix_remote_error.rb
@@ -0,0 +1,5 @@
+module TomTom
+ module Errors
+ class MatrixRemoteError < RuntimeError; end
+ end
+end
diff --git a/lib/tom_tom/matrix.rb b/lib/tom_tom/matrix.rb
index c418cd516..e779abbf7 100644
--- a/lib/tom_tom/matrix.rb
+++ b/lib/tom_tom/matrix.rb
@@ -4,6 +4,10 @@ module TomTom
@connection = connection
end
+ # Exceptions:
+ #
+ # * This raises a `TomTom::Errors::MatrixRemoteError` when the API responds
+ # with an error.
def matrix(way_costs)
points_with_ids = points_from_way_costs(way_costs)
points = points_as_params(points_with_ids)
@@ -21,6 +25,8 @@ module TomTom
req.body = build_request_body(points)
end
+ check_for_error_response(response)
+
extract_costs_to_way_costs!(
way_costs,
points_with_ids,
@@ -77,6 +83,20 @@ module TomTom
})
end
+ def check_for_error_response(response)
+ if response.status != 200
+ raise TomTom::Errors::MatrixRemoteError,
+ "status: #{response.status}, body: #{response.body}"
+ end
+
+ json = JSON.parse(response.body)
+
+ if json.has_key?('error')
+ raise TomTom::Errors::MatrixRemoteError,
+ "status: #{response.status}, message: #{json['error']['description']}"
+ end
+ end
+
def extract_costs_to_way_costs!(way_costs, points, matrix_json)
way_costs = []