synsbasen_api 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/synsbasen_api/client.rb +14 -6
- data/lib/synsbasen_api/error.rb +11 -0
- data/lib/synsbasen_api/resources/watched_vehicle.rb +3 -0
- data/lib/synsbasen_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 565b3bfae169b625688bcb1bb70d1fc3c68abb88d2226b0e796139a25adab9bc
|
4
|
+
data.tar.gz: fdb44552e927ff505dca9d8a1778ee84fb99ea559d1362518176ebcdb913f1ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 794d7cc6f66ddb9320e706810fd7aa6fcc262b81d1599ec7b92e8f265ea835e08568609ca23b5ae2be000a711a0ad07faadce0cdebd2b55ccf6289a526e48efb
|
7
|
+
data.tar.gz: e701b46e2c20799a2fd53a4be1baadf650179b5ca5ee4d01377aebe8a39c049a287d688595100e4bca0653edafb0bcfef4d868a94b0643edc44a45e29eb14066
|
data/lib/synsbasen_api/client.rb
CHANGED
@@ -109,17 +109,25 @@ module SynsbasenApi
|
|
109
109
|
# Raises specific errors based on the type of Net::HTTP error encountered.
|
110
110
|
#
|
111
111
|
# @param e [Exception] The exception to handle.
|
112
|
-
# @raise [ClientError, ServerError] Raised for
|
112
|
+
# @raise [ClientError, ServerError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, UnprocessableEntityError, InternalServerError] Raised for errors.
|
113
113
|
def raise_errors(response)
|
114
|
+
return unless response.is_a?(Net::HTTPClientError) || response.is_a?(Net::HTTPServerError)
|
115
|
+
|
114
116
|
case response
|
115
117
|
when Net::HTTPUnauthorized
|
116
118
|
raise ClientError.new(response.message, response.code, {})
|
117
|
-
when Net::HTTPClientError, Net::HTTPBadRequest, Net::HTTPForbidden, Net::HTTPNotFound
|
118
|
-
raise ClientError.new(response.message, response.code, parse_json(response.body))
|
119
|
-
when Net::HTTPServerError
|
120
|
-
raise ServerError.new(response.message, response.code, {})
|
121
119
|
else
|
122
|
-
response
|
120
|
+
error_class_name = "#{response.message.split.map(&:capitalize).join}Error"
|
121
|
+
|
122
|
+
error_class =
|
123
|
+
if SynsbasenApi.const_defined?(error_class_name, false) &&
|
124
|
+
SynsbasenApi.const_get(error_class_name).is_a?(Class)
|
125
|
+
SynsbasenApi.const_get(error_class_name)
|
126
|
+
else
|
127
|
+
response.is_a?(Net::HTTPClientError) ? ClientError : ServerError
|
128
|
+
end
|
129
|
+
|
130
|
+
raise error_class.new(response.message, response.code, parse_json(response.body))
|
123
131
|
end
|
124
132
|
end
|
125
133
|
|
data/lib/synsbasen_api/error.rb
CHANGED
@@ -29,4 +29,15 @@ module SynsbasenApi
|
|
29
29
|
|
30
30
|
# The `ServerError` class represents errors that occur on the server side (5xx status codes).
|
31
31
|
class ServerError < Error; end
|
32
|
+
|
33
|
+
%w[BadRequestError UnauthorizedError ForbiddenError NotFoundError
|
34
|
+
ConflictError UnprocessableEntityError].each do |error|
|
35
|
+
klass = Class.new(ClientError)
|
36
|
+
const_set(error, klass)
|
37
|
+
end
|
38
|
+
|
39
|
+
class InternalServerError < ServerError; end
|
40
|
+
|
41
|
+
# The `VehicleAlreadySubscribedError` class represents errors that occur when a vehicle is already being watched.
|
42
|
+
class VehicleAlreadySubscribedError < ConflictError; end
|
32
43
|
end
|
@@ -20,6 +20,9 @@ module SynsbasenApi
|
|
20
20
|
# of the newly created watched vehicle.
|
21
21
|
def subscribe(vehicle_id)
|
22
22
|
post("/v1/#{resource_name}", body: { vehicle_id: vehicle_id })
|
23
|
+
rescue SynsbasenApi::ClientError => e
|
24
|
+
raise VehicleAlreadySubscribedError.new(e.message, e.status, e.data) if e.status == "409"
|
25
|
+
raise e
|
23
26
|
end
|
24
27
|
|
25
28
|
# Deletes a watched vehicle.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synsbasen_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Poulsen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-09-
|
12
|
+
date: 2025-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Synsbasen API is the easiest way to get access to the Danish vehicle
|
15
15
|
registry. See https://api.synsbasen.dk for details.
|