synsbasen_api 1.0.1 → 1.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70f3463d8af67697bd559cb53ced9254cc04a6b217963e56b7fe89e6ebd19e33
4
- data.tar.gz: f1670824ee49861fbc4ef6f50ae9e929552ce78687bf1105167338ddc45c5a3f
3
+ metadata.gz: 2d13815e17928657fa26ebc1d124b909410034c2713e61f48ddb730ca255e137
4
+ data.tar.gz: 58476734c861a468c7ad7aab2a87cf5815c5420c70176babec6614b88666fe28
5
5
  SHA512:
6
- metadata.gz: d92c768c2ad3f9b159e66c388e7875a30cfc30e624886e3020005fb7c6b65ca773be241a61c5da715970afbbccd1d41c83d34e1cfe6d44e6b994a73f4ef4a840
7
- data.tar.gz: 071c62aee5fc0c1de9261d14c63f6f56540025f65ec5dc55873bfe5e9a98a85a4c29d9138b462eb04736339b76ba32e24ffa9b52010dc54065b3d27f69a7c90c
6
+ metadata.gz: a5e5d967bcc260fa27c79c1887ae250d22c88dcd1a8578266fb4340060e3225cb74a3879c93e50ad2cbc8ce9fd25d2aae06c5068bf28ea5216a9bd68cb671ee6
7
+ data.tar.gz: 278e5e5cdf251caf9b64fdb134cc0d961b620cb11f7b5b393704ad32e04ddac63404bd3ab88ad458a032ba7667f3e138890ce729bb2912d77fbbe9de784ea391
@@ -4,6 +4,8 @@ require "synsbasen_api/api_response"
4
4
  require "synsbasen_api/error"
5
5
  require "faraday"
6
6
  require "active_support/core_ext/hash/keys"
7
+ require "active_support/core_ext/object/blank"
8
+ require "active_support/core_ext/enumerable"
7
9
 
8
10
  module SynsbasenApi
9
11
  # The `Client` class serves as the base class for interacting with the Synsbasen API.
@@ -31,12 +33,13 @@ module SynsbasenApi
31
33
  # @param body [Hash] Request body.
32
34
  # @return [ApiResponse] An instance of `ApiResponse` containing the API response.
33
35
  # @raise [ClientError, ServerError] Raised for client or server errors.
34
- def get(path, params: {}, body: {})
36
+ def get(path, params: {}, expand: [])
35
37
  response = connection.get(path) do |req|
36
- req.params = params
37
- req.body = body unless body.empty?
38
+ req.params = { **params, expand: expand }.compact_blank
38
39
  end
39
40
 
41
+ handle_after_request_callback(response)
42
+
40
43
  ApiResponse.new(JSON.parse(response.body).deep_symbolize_keys)
41
44
  rescue => e
42
45
  rescue_and_raise_errors(e)
@@ -49,12 +52,14 @@ module SynsbasenApi
49
52
  # @param body [Hash] Request body.
50
53
  # @return [ApiResponse] An instance of `ApiResponse` containing the API response.
51
54
  # @raise [ClientError, ServerError] Raised for client or server errors.
52
- def post(path, params: {}, body: {})
55
+ def post(path, params: {}, body: {}, expand: [])
53
56
  response = connection.post(path) do |req|
54
57
  req.params = params
55
- req.body = body
58
+ req.body = { **body, expand: expand }.compact_blank.to_json
56
59
  end
57
60
 
61
+ handle_after_request_callback(response)
62
+
58
63
  ApiResponse.new(JSON.parse(response.body).deep_symbolize_keys)
59
64
  rescue => e
60
65
  rescue_and_raise_errors(e)
@@ -78,6 +83,16 @@ module SynsbasenApi
78
83
  raise e
79
84
  end
80
85
  end
86
+
87
+ # Calls the after_request callback if configured in the SynsbasenApi.
88
+ #
89
+ # @param response [Faraday::Response] The Faraday response object.
90
+ # @return [void]
91
+ def handle_after_request_callback(response)
92
+ return unless SynsbasenApi.config[:after_request]
93
+
94
+ SynsbasenApi.config[:after_request].call(response)
95
+ end
81
96
  end
82
97
  end
83
98
  end
@@ -10,16 +10,16 @@ module SynsbasenApi
10
10
  # @param id [String] The unique identifier of the brand.
11
11
  # @return [ApiResponse] An instance of `ApiResponse` containing details
12
12
  # of the specified brand.
13
- def find(id)
14
- get("/v1/brands/#{id}")
13
+ def find(id, expand: [])
14
+ get("/v1/brands/#{id}", expand: expand)
15
15
  end
16
16
 
17
17
  # Retrieves information about all brands.
18
18
  #
19
19
  # @return [ApiResponse] An instance of `ApiResponse` containing details
20
20
  # of all brands.
21
- def all
22
- get("/v1/brands")
21
+ def all(expand: [])
22
+ get("/v1/brands", expand: expand)
23
23
  end
24
24
  end
25
25
  end
@@ -10,12 +10,13 @@ module SynsbasenApi
10
10
  # @param args [Hash] Additional parameters to customize the search.
11
11
  # @option args [String] :method The search method. Default is 'SELECT'.
12
12
  # @return [ApiResponse] An instance of `ApiResponse` containing search results.
13
- def search(args = {})
13
+ def search(args = {}, expand: [])
14
14
  post(
15
15
  "/v1/inspections/search",
16
16
  body: {
17
17
  method: 'SELECT',
18
- }.merge(args).to_json
18
+ }.merge(args),
19
+ expand: expand
19
20
  )
20
21
  end
21
22
  end
@@ -10,8 +10,8 @@ module SynsbasenApi
10
10
  # @param id [String] The unique identifier of the model.
11
11
  # @return [ApiResponse] An instance of `ApiResponse` containing details
12
12
  # of the specified model.
13
- def find(id)
14
- get("/v1/models/#{id}")
13
+ def find(id, expand: [])
14
+ get("/v1/models/#{id}", expand: expand)
15
15
  end
16
16
 
17
17
  # Retrieves information about all models associated with a given brand.
@@ -19,8 +19,8 @@ module SynsbasenApi
19
19
  # @param brand_id [String] The unique identifier of the brand.
20
20
  # @return [ApiResponse] An instance of `ApiResponse` containing details
21
21
  # of all models associated with the specified brand.
22
- def all(brand_id)
23
- get("/v1/brands/#{brand_id}/models")
22
+ def all(brand_id, expand: [])
23
+ get("/v1/brands/#{brand_id}/models", expand: expand)
24
24
  end
25
25
  end
26
26
  end
@@ -10,8 +10,8 @@ module SynsbasenApi
10
10
  # @param id [String] The unique identifier of the variant.
11
11
  # @return [ApiResponse] An instance of `ApiResponse` containing details
12
12
  # of the specified variant.
13
- def find(id)
14
- get("/v1/variants/#{id}")
13
+ def find(id, expand: [])
14
+ get("/v1/variants/#{id}", expand: expand)
15
15
  end
16
16
 
17
17
  # Retrieves information about all variants associated with a given model.
@@ -19,8 +19,8 @@ module SynsbasenApi
19
19
  # @param model_id [String] The unique identifier of the model.
20
20
  # @return [ApiResponse] An instance of `ApiResponse` containing details
21
21
  # of all variants associated with the specified model.
22
- def all(model_id)
23
- get("/v1/models/#{model_id}/variants")
22
+ def all(model_id, expand: [])
23
+ get("/v1/models/#{model_id}/variants", expand: expand)
24
24
  end
25
25
  end
26
26
  end
@@ -10,8 +10,8 @@ module SynsbasenApi
10
10
  # @param id [String] The unique identifier of the vehicle.
11
11
  # @return [ApiResponse] An instance of `ApiResponse` containing details
12
12
  # of the specified vehicle.
13
- def find(id)
14
- get("/v1/vehicles/#{id}")
13
+ def find(id, expand: [])
14
+ get("/v1/vehicles/#{id}", expand: expand)
15
15
  end
16
16
 
17
17
  # Retrieves information about a vehicle based on its registration number.
@@ -19,8 +19,17 @@ module SynsbasenApi
19
19
  # @param registration [String] The registration number of the vehicle.
20
20
  # @return [ApiResponse] An instance of `ApiResponse` containing details
21
21
  # of the specified vehicle.
22
- def find_by_registration(registration)
23
- get("/v1/vehicles/registration/#{registration}")
22
+ def find_by_registration(registration, expand: [])
23
+ get("/v1/vehicles/registration/#{registration}", expand: expand)
24
+ end
25
+
26
+ # Retrieves information about a vehicle based on its VIN (Vehicle Identification Number).
27
+ #
28
+ # @param vin [String] The VIN of the vehicle.
29
+ # @return [ApiResponse] An instance of `ApiResponse` containing details
30
+ # of the specified vehicle.
31
+ def find_by_vin(vin, expand: [])
32
+ get("/v1/vehicles/vin/#{vin}", expand: expand)
24
33
  end
25
34
 
26
35
  # Performs a search for vehicles based on the provided criteria.
@@ -28,12 +37,13 @@ module SynsbasenApi
28
37
  # @param args [Hash] Additional parameters to customize the search.
29
38
  # @option args [String] :method The search method. Default is 'SELECT'.
30
39
  # @return [ApiResponse] An instance of `ApiResponse` containing search results.
31
- def search(args = {})
40
+ def search(args = {}, expand: nil)
32
41
  post(
33
42
  "/v1/vehicles/search",
34
43
  body: {
35
44
  method: 'SELECT',
36
- }.merge(args).to_json
45
+ }.merge(args),
46
+ expand: expand
37
47
  )
38
48
  end
39
49
  end
@@ -10,8 +10,8 @@ module SynsbasenApi
10
10
  # @param id [String] The unique identifier of the version.
11
11
  # @return [ApiResponse] An instance of `ApiResponse` containing details
12
12
  # of the specified version.
13
- def find(id)
14
- get("/v1/versions/#{id}")
13
+ def find(id, expand: [])
14
+ get("/v1/versions/#{id}", expand: expand)
15
15
  end
16
16
 
17
17
  # Retrieves information about all versions associated with a given variant.
@@ -19,8 +19,8 @@ module SynsbasenApi
19
19
  # @param variant_id [String] The unique identifier of the variant.
20
20
  # @return [ApiResponse] An instance of `ApiResponse` containing details
21
21
  # of all versions associated with the specified variant.
22
- def all(variant_id)
23
- get("/v1/variants/#{variant_id}/versions")
22
+ def all(variant_id, expand: [])
23
+ get("/v1/variants/#{variant_id}/versions", expand: expand)
24
24
  end
25
25
  end
26
26
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module SynsbasenApi
4
4
  # The `VERSION` module specifies the version of the SynsbasenApi gem.
5
- VERSION = "1.0.1"
5
+ VERSION = "1.0.3"
6
6
  end
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.1
4
+ version: 1.0.3
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: 2023-11-12 00:00:00.000000000 Z
12
+ date: 2023-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport