ev-recharge-sdk 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -21
  3. data/lib/shell_ev/client.rb +8 -8
  4. data/lib/shell_ev/configuration.rb +13 -17
  5. data/lib/shell_ev/controllers/base_controller.rb +9 -9
  6. data/lib/shell_ev/controllers/charging_controller.rb +121 -154
  7. data/lib/shell_ev/controllers/locations_controller.rb +226 -142
  8. data/lib/shell_ev/controllers/o_auth_authorization_controller.rb +8 -8
  9. data/lib/shell_ev/exceptions/bad_request_exception.rb +33 -18
  10. data/lib/shell_ev/exceptions/{m405_error_response_error1_exception.rb → internal_server_error_exception.rb} +31 -26
  11. data/lib/shell_ev/exceptions/not_found_exception.rb +36 -19
  12. data/lib/shell_ev/exceptions/o_auth_provider_exception.rb +15 -15
  13. data/lib/shell_ev/exceptions/{m400_error_response_error1_exception.rb → serviceunavailable_exception.rb} +28 -28
  14. data/lib/shell_ev/exceptions/{m401_error_response_error1_exception.rb → too_many_requests_exception.rb} +28 -28
  15. data/lib/shell_ev/exceptions/unauthorized_exception.rb +32 -18
  16. data/lib/shell_ev/http/auth/o_auth2.rb +54 -10
  17. data/lib/shell_ev/models/accessibility.rb +1 -2
  18. data/lib/shell_ev/models/active_response200_json.rb +11 -13
  19. data/lib/shell_ev/models/address.rb +1 -3
  20. data/lib/shell_ev/models/bad_request_err_msg.rb +82 -0
  21. data/lib/shell_ev/models/{stop_charge_session_request_body_json.rb → charge_error.rb} +21 -10
  22. data/lib/shell_ev/models/charge_retrieve_state.rb +63 -0
  23. data/lib/shell_ev/models/chargesession_start_body.rb +7 -9
  24. data/lib/shell_ev/models/connector_vo.rb +4 -9
  25. data/lib/shell_ev/models/coordinates.rb +1 -2
  26. data/lib/shell_ev/models/data_active.rb +27 -45
  27. data/lib/shell_ev/models/data_retrieve.rb +31 -49
  28. data/lib/shell_ev/models/electrical_properties.rb +1 -3
  29. data/lib/shell_ev/models/evse_vo.rb +3 -8
  30. data/lib/shell_ev/models/get_charge_session_retrieve_response200_json.rb +11 -13
  31. data/lib/shell_ev/models/{get_markers_list_authorization_methods_enum.rb → get_ev_locations_authorization_methods_enum.rb} +4 -4
  32. data/lib/shell_ev/models/{get_markers_list_connector_types_enum.rb → get_ev_locations_connector_types_enum.rb} +4 -4
  33. data/lib/shell_ev/models/{get_markers_list_evse_status_enum.rb → get_ev_locations_evse_status_enum.rb} +4 -4
  34. data/lib/shell_ev/models/inline_response202.rb +9 -11
  35. data/lib/shell_ev/models/inline_response2021.rb +5 -6
  36. data/lib/shell_ev/models/inline_response202_data.rb +7 -5
  37. data/lib/shell_ev/models/internal_error_object.rb +70 -0
  38. data/lib/shell_ev/models/location_respone_object.rb +4 -11
  39. data/lib/shell_ev/models/{get_locations_list_authorization_methods_enum.rb → locations_markers_authorization_methods_enum.rb} +4 -4
  40. data/lib/shell_ev/models/{get_locations_list_connector_types_enum.rb → locations_markers_connector_types_enum.rb} +4 -4
  41. data/lib/shell_ev/models/{get_locations_list_evse_status_enum.rb → locations_markers_evse_status_enum.rb} +4 -4
  42. data/lib/shell_ev/models/multi_location_marker.rb +2 -6
  43. data/lib/shell_ev/models/{get_nearby_locations_authorization_methods_enum.rb → nearby_locations_authorization_methods_enum.rb} +4 -4
  44. data/lib/shell_ev/models/{get_nearby_locations_connector_types_enum.rb → nearby_locations_connector_types_enum.rb} +4 -4
  45. data/lib/shell_ev/models/{get_nearby_locations_evse_status_enum.rb → nearby_locations_evse_status_enum.rb} +4 -4
  46. data/lib/shell_ev/models/not_found_err_msg.rb +82 -0
  47. data/lib/shell_ev/models/o_auth_token.rb +2 -6
  48. data/lib/shell_ev/models/opening_hours_object.rb +1 -3
  49. data/lib/shell_ev/models/ratelimit_err_msg.rb +82 -0
  50. data/lib/shell_ev/models/response.rb +78 -0
  51. data/lib/shell_ev/models/serviceunavailable_err_msg.rb +82 -0
  52. data/lib/shell_ev/models/single_location_marker.rb +5 -11
  53. data/lib/shell_ev/models/single_location_marker_authorization_methods_items_enum.rb +1 -1
  54. data/lib/shell_ev/models/single_location_marker_response.rb +81 -0
  55. data/lib/shell_ev/models/tariff_vo.rb +3 -7
  56. data/lib/shell_ev/models/unauthorized_err_msg.rb +82 -0
  57. data/lib/shell_ev/utilities/file_wrapper.rb +9 -9
  58. data/lib/shell_ev/utilities/union_type_lookup.rb +3 -2
  59. data/lib/shell_ev.rb +40 -60
  60. data/test/controllers/controller_test_base.rb +0 -5
  61. data/test/controllers/test_charging_controller.rb +74 -17
  62. data/test/controllers/test_locations_controller.rb +65 -0
  63. metadata +31 -49
  64. data/lib/shell_ev/exceptions/http401_error_response_exception.rb +0 -52
  65. data/lib/shell_ev/exceptions/m404_error_response_error1_exception.rb +0 -53
  66. data/lib/shell_ev/exceptions/m429_error_response_error1_exception.rb +0 -52
  67. data/lib/shell_ev/exceptions/m500_error_response_error1_exception.rb +0 -52
  68. data/lib/shell_ev/exceptions/m503_error_response_error1_exception.rb +0 -52
  69. data/lib/shell_ev/models/data_active_session_code_enum.rb +0 -44
  70. data/lib/shell_ev/models/data_active_session_state_enum.rb +0 -35
  71. data/lib/shell_ev/models/data_retrieve_session_code_enum.rb +0 -44
  72. data/lib/shell_ev/models/data_retrieve_session_state_enum.rb +0 -35
  73. data/lib/shell_ev/models/env_enum.rb +0 -23
  74. data/lib/shell_ev/models/m400_error_response.rb +0 -78
  75. data/lib/shell_ev/models/m400_error_response_error.rb +0 -80
  76. data/lib/shell_ev/models/m401_error_response.rb +0 -78
  77. data/lib/shell_ev/models/m401_error_response_error.rb +0 -80
  78. data/lib/shell_ev/models/m404_error_response.rb +0 -79
  79. data/lib/shell_ev/models/m404_error_response_error.rb +0 -80
  80. data/lib/shell_ev/models/m405_error_response.rb +0 -78
  81. data/lib/shell_ev/models/m405_error_response_error.rb +0 -80
  82. data/lib/shell_ev/models/m429_error_response.rb +0 -78
  83. data/lib/shell_ev/models/m429_error_response_error.rb +0 -80
  84. data/lib/shell_ev/models/m500_error_response.rb +0 -78
  85. data/lib/shell_ev/models/m500_error_response_error.rb +0 -80
  86. data/lib/shell_ev/models/m503_error_response.rb +0 -78
  87. data/lib/shell_ev/models/m503_error_response_error.rb +0 -80
  88. data/lib/shell_ev/models/response_base_status_enum.rb +0 -26
  89. data/lib/shell_ev/models/response_error401_all_of1.rb +0 -57
  90. data/lib/shell_ev/models/response_error401_all_of1_errors_items.rb +0 -80
  91. data/lib/shell_ev/models/success_response.rb +0 -58
@@ -4,49 +4,54 @@
4
4
  # ( https://apimatic.io ).
5
5
 
6
6
  module ShellEv
7
- # Method Not Allowed
8
- class M405ErrorResponseError1Exception < APIException
7
+ # InternalServerError class.
8
+ class InternalServerErrorException < APIException
9
9
  SKIP = Object.new
10
10
  private_constant :SKIP
11
11
 
12
- # Mandatory UUID (according to RFC 4122 standards) for requests and
13
- # responses. This will be played back in the response from the request.
12
+ # requestId is unique identifier value that is attached to requests and
13
+ # messages that allow reference to a particular transaction or event chain.
14
14
  # @return [String]
15
15
  attr_accessor :request_id
16
16
 
17
- # Indicates overall status of the request
17
+ # Status of the request
18
18
  # @return [String]
19
19
  attr_accessor :status
20
20
 
21
- # Indicates overall status of the request
22
- # @return [Array[M405ErrorResponseError]]
21
+ # Exception details of the error
22
+ # @return [Array[InternalErrorObject]]
23
23
  attr_accessor :errors
24
24
 
25
- # The constructor.
26
- # @param [String] The reason for raising an exception.
27
- # @param [HttpResponse] The HttpReponse of the API call.
28
- def initialize(reason, response)
29
- super(reason, response)
30
- hash = APIHelper.json_deserialize(@response.raw_body)
31
- unbox(hash)
32
- end
33
-
34
- # Populates this object by extracting properties from a hash.
35
- # @param [Hash] The deserialized response sent by the server in the
36
- # response body.
37
- def unbox(hash)
38
- @request_id = hash.key?('RequestId') ? hash['RequestId'] : nil
39
- @status = hash.key?('Status') ? hash['Status'] : nil
25
+ # Exception details of the error
26
+ # @return [Array[String]]
27
+ attr_accessor :details
28
+
29
+ # The constructor.
30
+ # @param [String] The reason for raising an exception.
31
+ # @param [HttpResponse] The HttpReponse of the API call.
32
+ def initialize(reason, response)
33
+ super(reason, response)
34
+ hash = APIHelper.json_deserialize(@response.raw_body)
35
+ unbox(hash)
36
+ end
37
+
38
+ # Populates this object by extracting properties from a hash.
39
+ # @param [Hash] The deserialized response sent by the server in the
40
+ # response body.
41
+ def unbox(hash)
42
+ @request_id = hash.key?('requestId') ? hash['requestId'] : SKIP
43
+ @status = hash.key?('status') ? hash['status'] : SKIP
40
44
  # Parameter is an array, so we need to iterate through it
41
45
  @errors = nil
42
- unless hash['Errors'].nil?
46
+ unless hash['errors'].nil?
43
47
  @errors = []
44
- hash['Errors'].each do |structure|
45
- @errors << (M405ErrorResponseError.from_hash(structure) if structure)
48
+ hash['errors'].each do |structure|
49
+ @errors << (InternalErrorObject.from_hash(structure) if structure)
46
50
  end
47
51
  end
48
52
 
49
- @errors = SKIP unless hash.key?('Errors')
53
+ @errors = SKIP unless hash.key?('errors')
54
+ @details = hash.key?('details') ? hash['details'] : SKIP
50
55
  end
51
56
  end
52
57
  end
@@ -4,34 +4,51 @@
4
4
  # ( https://apimatic.io ).
5
5
 
6
6
  module ShellEv
7
- # NotFound class.
7
+ # Requested resource path not available it will provides the error in OpenAPI
8
+ # spec mentioned format, if there is any change in base URL then respective
9
+ # platform error message will be populated.
8
10
  class NotFoundException < APIException
9
11
  SKIP = Object.new
10
12
  private_constant :SKIP
11
13
 
12
- # Error code
14
+ # requestId is unique identifier value that is attached to requests and
15
+ # messages that allow reference to a particular transaction or event chain.
13
16
  # @return [String]
14
- attr_accessor :code
17
+ attr_accessor :request_id
15
18
 
16
- # Error desctiption in English
19
+ # Status of the request
17
20
  # @return [String]
18
- attr_accessor :message
21
+ attr_accessor :status
19
22
 
20
- # The constructor.
21
- # @param [String] The reason for raising an exception.
22
- # @param [HttpResponse] The HttpReponse of the API call.
23
- def initialize(reason, response)
24
- super(reason, response)
25
- hash = APIHelper.json_deserialize(@response.raw_body)
26
- unbox(hash)
27
- end
23
+ # Exception details of the error
24
+ # @return [Array[NotFoundErrMsg]]
25
+ attr_accessor :errors
26
+
27
+ # The constructor.
28
+ # @param [String] The reason for raising an exception.
29
+ # @param [HttpResponse] The HttpReponse of the API call.
30
+ def initialize(reason, response)
31
+ super(reason, response)
32
+ hash = APIHelper.json_deserialize(@response.raw_body)
33
+ unbox(hash)
34
+ end
35
+
36
+ # Populates this object by extracting properties from a hash.
37
+ # @param [Hash] The deserialized response sent by the server in the
38
+ # response body.
39
+ def unbox(hash)
40
+ @request_id = hash.key?('requestId') ? hash['requestId'] : SKIP
41
+ @status = hash.key?('status') ? hash['status'] : SKIP
42
+ # Parameter is an array, so we need to iterate through it
43
+ @errors = nil
44
+ unless hash['errors'].nil?
45
+ @errors = []
46
+ hash['errors'].each do |structure|
47
+ @errors << (NotFoundErrMsg.from_hash(structure) if structure)
48
+ end
49
+ end
28
50
 
29
- # Populates this object by extracting properties from a hash.
30
- # @param [Hash] The deserialized response sent by the server in the
31
- # response body.
32
- def unbox(hash)
33
- @code = hash.key?('code') ? hash['code'] : SKIP
34
- @message = hash.key?('message') ? hash['message'] : SKIP
51
+ @errors = SKIP unless hash.key?('errors')
35
52
  end
36
53
  end
37
54
  end
@@ -24,21 +24,21 @@ module ShellEv
24
24
  # about the error, used to provide the client developer with additional
25
25
  # information about the error.
26
26
  # @return [String]
27
- attr_accessor :error_uri
28
-
29
- # The constructor.
30
- # @param [String] The reason for raising an exception.
31
- # @param [HttpResponse] The HttpReponse of the API call.
32
- def initialize(reason, response)
33
- super(reason, response)
34
- hash = APIHelper.json_deserialize(@response.raw_body)
35
- unbox(hash)
36
- end
37
-
38
- # Populates this object by extracting properties from a hash.
39
- # @param [Hash] The deserialized response sent by the server in the
40
- # response body.
41
- def unbox(hash)
27
+ attr_accessor :error_uri
28
+
29
+ # The constructor.
30
+ # @param [String] The reason for raising an exception.
31
+ # @param [HttpResponse] The HttpReponse of the API call.
32
+ def initialize(reason, response)
33
+ super(reason, response)
34
+ hash = APIHelper.json_deserialize(@response.raw_body)
35
+ unbox(hash)
36
+ end
37
+
38
+ # Populates this object by extracting properties from a hash.
39
+ # @param [Hash] The deserialized response sent by the server in the
40
+ # response body.
41
+ def unbox(hash)
42
42
  @error = hash.key?('error') ? hash['error'] : nil
43
43
  @error_description =
44
44
  hash.key?('error_description') ? hash['error_description'] : SKIP
@@ -4,49 +4,49 @@
4
4
  # ( https://apimatic.io ).
5
5
 
6
6
  module ShellEv
7
- # Bad Request
8
- class M400ErrorResponseError1Exception < APIException
7
+ # Serviceunavailable class.
8
+ class ServiceunavailableException < APIException
9
9
  SKIP = Object.new
10
10
  private_constant :SKIP
11
11
 
12
- # Mandatory UUID (according to RFC 4122 standards) for requests and
13
- # responses. This will be played back in the response from the request.
12
+ # requestId is unique identifier value that is attached to requests and
13
+ # messages that allow reference to a particular transaction or event chain.
14
14
  # @return [String]
15
15
  attr_accessor :request_id
16
16
 
17
- # Indicates overall status of the request
17
+ # Status of the request
18
18
  # @return [String]
19
19
  attr_accessor :status
20
20
 
21
- # Indicates overall status of the request
22
- # @return [Array[M400ErrorResponseError]]
23
- attr_accessor :errors
24
-
25
- # The constructor.
26
- # @param [String] The reason for raising an exception.
27
- # @param [HttpResponse] The HttpReponse of the API call.
28
- def initialize(reason, response)
29
- super(reason, response)
30
- hash = APIHelper.json_deserialize(@response.raw_body)
31
- unbox(hash)
32
- end
33
-
34
- # Populates this object by extracting properties from a hash.
35
- # @param [Hash] The deserialized response sent by the server in the
36
- # response body.
37
- def unbox(hash)
38
- @request_id = hash.key?('RequestId') ? hash['RequestId'] : nil
39
- @status = hash.key?('Status') ? hash['Status'] : nil
21
+ # Exception details of the error
22
+ # @return [Array[ServiceunavailableErrMsg]]
23
+ attr_accessor :errors
24
+
25
+ # The constructor.
26
+ # @param [String] The reason for raising an exception.
27
+ # @param [HttpResponse] The HttpReponse of the API call.
28
+ def initialize(reason, response)
29
+ super(reason, response)
30
+ hash = APIHelper.json_deserialize(@response.raw_body)
31
+ unbox(hash)
32
+ end
33
+
34
+ # Populates this object by extracting properties from a hash.
35
+ # @param [Hash] The deserialized response sent by the server in the
36
+ # response body.
37
+ def unbox(hash)
38
+ @request_id = hash.key?('requestId') ? hash['requestId'] : SKIP
39
+ @status = hash.key?('status') ? hash['status'] : SKIP
40
40
  # Parameter is an array, so we need to iterate through it
41
41
  @errors = nil
42
- unless hash['Errors'].nil?
42
+ unless hash['errors'].nil?
43
43
  @errors = []
44
- hash['Errors'].each do |structure|
45
- @errors << (M400ErrorResponseError.from_hash(structure) if structure)
44
+ hash['errors'].each do |structure|
45
+ @errors << (ServiceunavailableErrMsg.from_hash(structure) if structure)
46
46
  end
47
47
  end
48
48
 
49
- @errors = SKIP unless hash.key?('Errors')
49
+ @errors = SKIP unless hash.key?('errors')
50
50
  end
51
51
  end
52
52
  end
@@ -4,49 +4,49 @@
4
4
  # ( https://apimatic.io ).
5
5
 
6
6
  module ShellEv
7
- # Unauthorized
8
- class M401ErrorResponseError1Exception < APIException
7
+ # TooManyRequests class.
8
+ class TooManyRequestsException < APIException
9
9
  SKIP = Object.new
10
10
  private_constant :SKIP
11
11
 
12
- # Mandatory UUID (according to RFC 4122 standards) for requests and
13
- # responses. This will be played back in the response from the request.
12
+ # RequestID is unique identifier value that is attached to requests and
13
+ # messages that allow reference to a particular transaction or event chain.
14
14
  # @return [String]
15
15
  attr_accessor :request_id
16
16
 
17
- # Indicates overall status of the request
17
+ # Status of the request
18
18
  # @return [String]
19
19
  attr_accessor :status
20
20
 
21
- # Indicates overall status of the request
22
- # @return [Array[M401ErrorResponseError]]
23
- attr_accessor :errors
24
-
25
- # The constructor.
26
- # @param [String] The reason for raising an exception.
27
- # @param [HttpResponse] The HttpReponse of the API call.
28
- def initialize(reason, response)
29
- super(reason, response)
30
- hash = APIHelper.json_deserialize(@response.raw_body)
31
- unbox(hash)
32
- end
33
-
34
- # Populates this object by extracting properties from a hash.
35
- # @param [Hash] The deserialized response sent by the server in the
36
- # response body.
37
- def unbox(hash)
38
- @request_id = hash.key?('RequestId') ? hash['RequestId'] : nil
39
- @status = hash.key?('Status') ? hash['Status'] : nil
21
+ # Exception details of the error
22
+ # @return [Array[RatelimitErrMsg]]
23
+ attr_accessor :errors
24
+
25
+ # The constructor.
26
+ # @param [String] The reason for raising an exception.
27
+ # @param [HttpResponse] The HttpReponse of the API call.
28
+ def initialize(reason, response)
29
+ super(reason, response)
30
+ hash = APIHelper.json_deserialize(@response.raw_body)
31
+ unbox(hash)
32
+ end
33
+
34
+ # Populates this object by extracting properties from a hash.
35
+ # @param [Hash] The deserialized response sent by the server in the
36
+ # response body.
37
+ def unbox(hash)
38
+ @request_id = hash.key?('requestId') ? hash['requestId'] : SKIP
39
+ @status = hash.key?('status') ? hash['status'] : SKIP
40
40
  # Parameter is an array, so we need to iterate through it
41
41
  @errors = nil
42
- unless hash['Errors'].nil?
42
+ unless hash['errors'].nil?
43
43
  @errors = []
44
- hash['Errors'].each do |structure|
45
- @errors << (M401ErrorResponseError.from_hash(structure) if structure)
44
+ hash['errors'].each do |structure|
45
+ @errors << (RatelimitErrMsg.from_hash(structure) if structure)
46
46
  end
47
47
  end
48
48
 
49
- @errors = SKIP unless hash.key?('Errors')
49
+ @errors = SKIP unless hash.key?('errors')
50
50
  end
51
51
  end
52
52
  end
@@ -9,29 +9,43 @@ module ShellEv
9
9
  SKIP = Object.new
10
10
  private_constant :SKIP
11
11
 
12
- # Error code
12
+ # requestId or correlation id of the message
13
13
  # @return [String]
14
- attr_accessor :code
14
+ attr_accessor :request_id
15
15
 
16
- # Error desctiption in English
16
+ # Status of the request
17
17
  # @return [String]
18
- attr_accessor :message
18
+ attr_accessor :status
19
19
 
20
- # The constructor.
21
- # @param [String] The reason for raising an exception.
22
- # @param [HttpResponse] The HttpReponse of the API call.
23
- def initialize(reason, response)
24
- super(reason, response)
25
- hash = APIHelper.json_deserialize(@response.raw_body)
26
- unbox(hash)
27
- end
20
+ # Exception details of the error
21
+ # @return [Array[UnauthorizedErrMsg]]
22
+ attr_accessor :errors
23
+
24
+ # The constructor.
25
+ # @param [String] The reason for raising an exception.
26
+ # @param [HttpResponse] The HttpReponse of the API call.
27
+ def initialize(reason, response)
28
+ super(reason, response)
29
+ hash = APIHelper.json_deserialize(@response.raw_body)
30
+ unbox(hash)
31
+ end
32
+
33
+ # Populates this object by extracting properties from a hash.
34
+ # @param [Hash] The deserialized response sent by the server in the
35
+ # response body.
36
+ def unbox(hash)
37
+ @request_id = hash.key?('requestId') ? hash['requestId'] : SKIP
38
+ @status = hash.key?('status') ? hash['status'] : SKIP
39
+ # Parameter is an array, so we need to iterate through it
40
+ @errors = nil
41
+ unless hash['errors'].nil?
42
+ @errors = []
43
+ hash['errors'].each do |structure|
44
+ @errors << (UnauthorizedErrMsg.from_hash(structure) if structure)
45
+ end
46
+ end
28
47
 
29
- # Populates this object by extracting properties from a hash.
30
- # @param [Hash] The deserialized response sent by the server in the
31
- # response body.
32
- def unbox(hash)
33
- @code = hash.key?('code') ? hash['code'] : SKIP
34
- @message = hash.key?('message') ? hash['message'] : SKIP
48
+ @errors = SKIP unless hash.key?('errors')
35
49
  end
36
50
  end
37
51
  end
@@ -15,23 +15,27 @@ module ShellEv
15
15
 
16
16
  # Initialization constructor.
17
17
  def initialize(client_credentials_auth_credentials, config)
18
- auth_params = {}
19
18
  @_o_auth_client_id = client_credentials_auth_credentials.o_auth_client_id unless
20
19
  client_credentials_auth_credentials.nil? || client_credentials_auth_credentials.o_auth_client_id.nil?
21
20
  @_o_auth_client_secret = client_credentials_auth_credentials.o_auth_client_secret unless
22
21
  client_credentials_auth_credentials.nil? || client_credentials_auth_credentials.o_auth_client_secret.nil?
23
22
  @_o_auth_token = client_credentials_auth_credentials.o_auth_token unless
24
23
  client_credentials_auth_credentials.nil? || client_credentials_auth_credentials.o_auth_token.nil?
24
+ @_o_auth_clock_skew = client_credentials_auth_credentials.o_auth_clock_skew unless
25
+ client_credentials_auth_credentials.nil? || client_credentials_auth_credentials.o_auth_clock_skew.nil?
26
+ @_o_auth_token_provider = client_credentials_auth_credentials.o_auth_token_provider unless
27
+ client_credentials_auth_credentials.nil? || client_credentials_auth_credentials.o_auth_token_provider.nil?
28
+ @_o_auth_on_token_update = client_credentials_auth_credentials.o_auth_on_token_update unless
29
+ client_credentials_auth_credentials.nil? || client_credentials_auth_credentials.o_auth_on_token_update.nil?
25
30
  @_o_auth_api = OAuthAuthorizationController.new(config)
26
- auth_params['Authorization'] = "Bearer #{@_o_auth_token.access_token}" unless @_o_auth_token.nil?
27
-
28
- super auth_params
31
+ super({})
29
32
  end
30
33
 
31
34
  # Validates the oAuth token.
32
35
  # @return [Boolean] true if the token is present and not expired.
33
36
  def valid
34
- !@_o_auth_token.nil? && !token_expired?(@_o_auth_token)
37
+ @_o_auth_token = get_token_from_provider
38
+ @_o_auth_token.is_a?(OAuthToken) && !token_expired?(@_o_auth_token)
35
39
  end
36
40
 
37
41
  # Builds the basic auth header for endpoints in the OAuth Authorization Controller.
@@ -58,32 +62,72 @@ module ShellEv
58
62
  # @param [OAuthToken] token The oAuth token instance.
59
63
  # @return [Boolean] true if the token's expiry exist and also the token is expired, false otherwise.
60
64
  def token_expired?(token)
61
- token.respond_to?('expiry') && AuthHelper.token_expired?(token.expiry)
65
+ token.respond_to?('expiry') && AuthHelper.token_expired?(token.expiry, @_o_auth_clock_skew)
66
+ end
67
+
68
+ def apply(http_request)
69
+ auth_params = { 'Authorization' => "Bearer #{@_o_auth_token.access_token}" }
70
+ AuthHelper.apply(auth_params, http_request.method(:add_header))
71
+ end
72
+
73
+ private
74
+
75
+ # This provides the OAuth Token from either the user configured callbacks or from default provider.
76
+ # @return [OAuthToken] The fetched oauth token.
77
+ def get_token_from_provider
78
+ return @_o_auth_token if @_o_auth_token && !token_expired?(@_o_auth_token)
79
+
80
+ if @_o_auth_token_provider
81
+ o_auth_token = @_o_auth_token_provider.call(@_o_auth_token, self)
82
+ @_o_auth_on_token_update&.call(o_auth_token)
83
+ return o_auth_token
84
+ end
85
+ begin
86
+ o_auth_token = fetch_token
87
+ @_o_auth_on_token_update&.call(o_auth_token)
88
+ o_auth_token
89
+ rescue ApiException
90
+ @_o_auth_token
91
+ end
62
92
  end
63
93
  end
64
94
 
65
95
  # Data class for ClientCredentialsAuthCredentials.
66
96
  class ClientCredentialsAuthCredentials
67
- attr_reader :o_auth_client_id, :o_auth_client_secret, :o_auth_token
97
+ attr_reader :o_auth_client_id, :o_auth_client_secret, :o_auth_token,
98
+ :o_auth_token_provider, :o_auth_on_token_update,
99
+ :o_auth_clock_skew
68
100
 
69
- def initialize(o_auth_client_id:, o_auth_client_secret:, o_auth_token: nil)
101
+ def initialize(o_auth_client_id:, o_auth_client_secret:, o_auth_token: nil,
102
+ o_auth_token_provider: nil, o_auth_on_token_update: nil,
103
+ o_auth_clock_skew: nil)
70
104
  raise ArgumentError, 'o_auth_client_id cannot be nil' if o_auth_client_id.nil?
71
105
  raise ArgumentError, 'o_auth_client_secret cannot be nil' if o_auth_client_secret.nil?
72
106
 
73
107
  @o_auth_client_id = o_auth_client_id
74
108
  @o_auth_client_secret = o_auth_client_secret
75
109
  @o_auth_token = o_auth_token
110
+ @o_auth_token_provider = o_auth_token_provider
111
+ @o_auth_on_token_update = o_auth_on_token_update
112
+ @o_auth_clock_skew = o_auth_clock_skew
76
113
  end
77
114
 
78
115
  def clone_with(o_auth_client_id: nil, o_auth_client_secret: nil,
79
- o_auth_token: nil)
116
+ o_auth_token: nil, o_auth_token_provider: nil,
117
+ o_auth_on_token_update: nil, o_auth_clock_skew: nil)
80
118
  o_auth_client_id ||= self.o_auth_client_id
81
119
  o_auth_client_secret ||= self.o_auth_client_secret
82
120
  o_auth_token ||= self.o_auth_token
121
+ o_auth_token_provider ||= self.o_auth_token_provider
122
+ o_auth_on_token_update ||= self.o_auth_on_token_update
123
+ o_auth_clock_skew ||= self.o_auth_clock_skew
83
124
 
84
125
  ClientCredentialsAuthCredentials.new(
85
126
  o_auth_client_id: o_auth_client_id,
86
- o_auth_client_secret: o_auth_client_secret, o_auth_token: o_auth_token
127
+ o_auth_client_secret: o_auth_client_secret, o_auth_token: o_auth_token,
128
+ o_auth_token_provider: o_auth_token_provider,
129
+ o_auth_on_token_update: o_auth_on_token_update,
130
+ o_auth_clock_skew: o_auth_clock_skew
87
131
  )
88
132
  end
89
133
  end
@@ -38,8 +38,7 @@ module ShellEv
38
38
  []
39
39
  end
40
40
 
41
- def initialize(status = SKIP,
42
- remark = SKIP)
41
+ def initialize(status = SKIP, remark = SKIP)
43
42
  @status = status unless status == SKIP
44
43
  @remark = remark unless remark == SKIP
45
44
  end
@@ -9,8 +9,8 @@ module ShellEv
9
9
  SKIP = Object.new
10
10
  private_constant :SKIP
11
11
 
12
- # A unique request id in GUID format. The value is written to the Shell API
13
- # Platform audit log for end to end traceability of a request.
12
+ # Mandatory UUID (according to RFC 4122 standards) for requests and
13
+ # responses. This will be played back in the response from the request.
14
14
  # @return [UUID | String]
15
15
  attr_accessor :request_id
16
16
 
@@ -25,9 +25,9 @@ module ShellEv
25
25
  # A mapping from model property names to API property names.
26
26
  def self.names
27
27
  @_hash = {} if @_hash.nil?
28
- @_hash['request_id'] = 'RequestId'
29
- @_hash['status'] = 'Status'
30
- @_hash['data'] = 'Data'
28
+ @_hash['request_id'] = 'requestId'
29
+ @_hash['status'] = 'status'
30
+ @_hash['data'] = 'data'
31
31
  @_hash
32
32
  end
33
33
 
@@ -43,9 +43,7 @@ module ShellEv
43
43
  []
44
44
  end
45
45
 
46
- def initialize(request_id = nil,
47
- status = nil,
48
- data = SKIP)
46
+ def initialize(request_id = nil, status = nil, data = SKIP)
49
47
  @request_id = request_id
50
48
  @status = status
51
49
  @data = data unless data == SKIP
@@ -56,18 +54,18 @@ module ShellEv
56
54
  return nil unless hash
57
55
 
58
56
  # Extract variables from the hash.
59
- request_id = hash.key?('RequestId') ? hash['RequestId'] : nil
60
- status = hash.key?('Status') ? hash['Status'] : nil
57
+ request_id = hash.key?('requestId') ? hash['requestId'] : nil
58
+ status = hash.key?('status') ? hash['status'] : nil
61
59
  # Parameter is an array, so we need to iterate through it
62
60
  data = nil
63
- unless hash['Data'].nil?
61
+ unless hash['data'].nil?
64
62
  data = []
65
- hash['Data'].each do |structure|
63
+ hash['data'].each do |structure|
66
64
  data << (DataActive.from_hash(structure) if structure)
67
65
  end
68
66
  end
69
67
 
70
- data = SKIP unless hash.key?('Data')
68
+ data = SKIP unless hash.key?('data')
71
69
 
72
70
  # Create object from extracted values.
73
71
  ActiveResponse200Json.new(request_id,
@@ -50,9 +50,7 @@ module ShellEv
50
50
  []
51
51
  end
52
52
 
53
- def initialize(street_and_number = SKIP,
54
- postal_code = SKIP,
55
- city = SKIP,
53
+ def initialize(street_and_number = SKIP, postal_code = SKIP, city = SKIP,
56
54
  country = SKIP)
57
55
  @street_and_number = street_and_number unless street_and_number == SKIP
58
56
  @postal_code = postal_code unless postal_code == SKIP