digital-payments-sdk 1.0.0

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.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +85 -0
  4. data/lib/shell_ev/api_helper.rb +10 -0
  5. data/lib/shell_ev/client.rb +86 -0
  6. data/lib/shell_ev/configuration.rb +104 -0
  7. data/lib/shell_ev/controllers/base_controller.rb +66 -0
  8. data/lib/shell_ev/controllers/digital_payment_enablement_controller.rb +56 -0
  9. data/lib/shell_ev/controllers/fueling_controller.rb +126 -0
  10. data/lib/shell_ev/controllers/partner_notification_controller.rb +95 -0
  11. data/lib/shell_ev/controllers/shell_api_platform_security_authentication_controller.rb +44 -0
  12. data/lib/shell_ev/controllers/station_locator_controller.rb +76 -0
  13. data/lib/shell_ev/exceptions/access_token_error_exception.rb +37 -0
  14. data/lib/shell_ev/exceptions/api_exception.rb +10 -0
  15. data/lib/shell_ev/exceptions/cancel_fueling_error_response_error_exception.rb +64 -0
  16. data/lib/shell_ev/exceptions/mpp_acces_token_error_response_exception.rb +44 -0
  17. data/lib/shell_ev/exceptions/payment_enablement_error_response_exception.rb +37 -0
  18. data/lib/shell_ev/exceptions/station_locator_bad_request_exception.rb +38 -0
  19. data/lib/shell_ev/exceptions/station_locator_forbidden_exception.rb +38 -0
  20. data/lib/shell_ev/exceptions/station_locator_internal_server_error_exception.rb +38 -0
  21. data/lib/shell_ev/exceptions/station_locator_not_found_exception.rb +38 -0
  22. data/lib/shell_ev/exceptions/station_locator_unauthorized_exception.rb +38 -0
  23. data/lib/shell_ev/http/auth/mpp_token.rb +42 -0
  24. data/lib/shell_ev/http/auth/o_auth_token_post.rb +44 -0
  25. data/lib/shell_ev/http/http_call_back.rb +10 -0
  26. data/lib/shell_ev/http/http_method_enum.rb +10 -0
  27. data/lib/shell_ev/http/http_request.rb +10 -0
  28. data/lib/shell_ev/http/http_response.rb +10 -0
  29. data/lib/shell_ev/models/access_token_response.rb +71 -0
  30. data/lib/shell_ev/models/around_location_array.rb +109 -0
  31. data/lib/shell_ev/models/around_location_array_data_items.rb +242 -0
  32. data/lib/shell_ev/models/around_location_array_data_items_loc.rb +99 -0
  33. data/lib/shell_ev/models/around_location_array_data_items_opening_hours_items.rb +148 -0
  34. data/lib/shell_ev/models/base_model.rb +62 -0
  35. data/lib/shell_ev/models/cancel_fueling_error_response.rb +92 -0
  36. data/lib/shell_ev/models/cancel_fueling_request.rb +61 -0
  37. data/lib/shell_ev/models/collecting_company.rb +50 -0
  38. data/lib/shell_ev/models/fault_response.rb +50 -0
  39. data/lib/shell_ev/models/fault_response_fault.rb +60 -0
  40. data/lib/shell_ev/models/fault_response_fault_detail.rb +50 -0
  41. data/lib/shell_ev/models/finalise_fueling_request.rb +181 -0
  42. data/lib/shell_ev/models/finalise_fueling_request_payment.rb +71 -0
  43. data/lib/shell_ev/models/finalise_fueling_request_products_items.rb +70 -0
  44. data/lib/shell_ev/models/loyalty_details.rb +59 -0
  45. data/lib/shell_ev/models/mobile_payment_registration_request.rb +134 -0
  46. data/lib/shell_ev/models/mpp_acces_token_response.rb +81 -0
  47. data/lib/shell_ev/models/mpp_error.rb +94 -0
  48. data/lib/shell_ev/models/mpp_token_request_body.rb +73 -0
  49. data/lib/shell_ev/models/oauth_token_post_request_body.rb +73 -0
  50. data/lib/shell_ev/models/partner_token_request_body.rb +73 -0
  51. data/lib/shell_ev/models/payment_details_items.rb +78 -0
  52. data/lib/shell_ev/models/payment_enablement_response.rb +48 -0
  53. data/lib/shell_ev/models/payment_properties.rb +169 -0
  54. data/lib/shell_ev/models/prepare_fueling_request.rb +183 -0
  55. data/lib/shell_ev/models/prepare_fueling_request_device_details_items.rb +95 -0
  56. data/lib/shell_ev/models/prepare_fueling_response.rb +66 -0
  57. data/lib/shell_ev/utilities/date_time_helper.rb +11 -0
  58. data/lib/shell_ev/utilities/file_wrapper.rb +16 -0
  59. data/lib/shell_ev.rb +85 -0
  60. data/test/controllers/controller_test_base.rb +29 -0
  61. data/test/controllers/test_fueling_controller.rb +61 -0
  62. data/test/controllers/test_partner_notification_controller.rb +60 -0
  63. data/test/controllers/test_shell_api_platform_security_authentication_controller.rb +36 -0
  64. data/test/controllers/test_station_locator_controller.rb +44 -0
  65. data/test/http_response_catcher.rb +19 -0
  66. metadata +185 -0
@@ -0,0 +1,78 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # PaymentDetailsItems Model.
8
+ class PaymentDetailsItems < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The type of commercial transaction. Permitted value\:
13
+ # * B2B
14
+ # @return [String]
15
+ attr_accessor :payment_category
16
+
17
+ # The payment method used to make the transaction. Possible values include:
18
+ # * euroShell
19
+ # @return [String]
20
+ attr_accessor :payment_method_id
21
+
22
+ # Object containing Payment Property details Please note:
23
+ # All the attributes are optional as they serve all payment methods (i.e.
24
+ # different payment methods require different fields to be filled/mandated).
25
+ # As a result, some of these fields will be mandatory depending on the
26
+ # selected payment method and the API will return an error if they are not
27
+ # completed
28
+ # @return [PaymentProperties]
29
+ attr_accessor :payment_properties
30
+
31
+ # A mapping from model property names to API property names.
32
+ def self.names
33
+ @_hash = {} if @_hash.nil?
34
+ @_hash['payment_category'] = 'paymentCategory'
35
+ @_hash['payment_method_id'] = 'paymentMethodId'
36
+ @_hash['payment_properties'] = 'paymentProperties'
37
+ @_hash
38
+ end
39
+
40
+ # An array for optional fields
41
+ def self.optionals
42
+ %w[
43
+ payment_category
44
+ ]
45
+ end
46
+
47
+ # An array for nullable fields
48
+ def self.nullables
49
+ []
50
+ end
51
+
52
+ def initialize(payment_method_id = nil,
53
+ payment_properties = nil,
54
+ payment_category = SKIP)
55
+ @payment_category = payment_category unless payment_category == SKIP
56
+ @payment_method_id = payment_method_id
57
+ @payment_properties = payment_properties
58
+ end
59
+
60
+ # Creates an instance of the object from a hash.
61
+ def self.from_hash(hash)
62
+ return nil unless hash
63
+
64
+ # Extract variables from the hash.
65
+ payment_method_id =
66
+ hash.key?('paymentMethodId') ? hash['paymentMethodId'] : nil
67
+ payment_properties = PaymentProperties.from_hash(hash['paymentProperties']) if
68
+ hash['paymentProperties']
69
+ payment_category =
70
+ hash.key?('paymentCategory') ? hash['paymentCategory'] : SKIP
71
+
72
+ # Create object from extracted values.
73
+ PaymentDetailsItems.new(payment_method_id,
74
+ payment_properties,
75
+ payment_category)
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,48 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # PaymentEnablementResponse Model.
8
+ class PaymentEnablementResponse < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # DPan Last number
13
+ # @return [String]
14
+ attr_accessor :dpan_last4
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['dpan_last4'] = 'dpanLast4'
20
+ @_hash
21
+ end
22
+
23
+ # An array for optional fields
24
+ def self.optionals
25
+ []
26
+ end
27
+
28
+ # An array for nullable fields
29
+ def self.nullables
30
+ []
31
+ end
32
+
33
+ def initialize(dpan_last4 = nil)
34
+ @dpan_last4 = dpan_last4
35
+ end
36
+
37
+ # Creates an instance of the object from a hash.
38
+ def self.from_hash(hash)
39
+ return nil unless hash
40
+
41
+ # Extract variables from the hash.
42
+ dpan_last4 = hash.key?('dpanLast4') ? hash['dpanLast4'] : nil
43
+
44
+ # Create object from extracted values.
45
+ PaymentEnablementResponse.new(dpan_last4)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,169 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # Object containing Payment Property details Please note: All the
8
+ # attributes are optional as they serve all payment methods (i.e. different
9
+ # payment methods require different fields to be filled/mandated). As a
10
+ # result, some of these fields will be mandatory depending on the selected
11
+ # payment method and the API will return an error if they are not completed
12
+ class PaymentProperties < BaseModel
13
+ SKIP = Object.new
14
+ private_constant :SKIP
15
+
16
+ # The type of payment (e.g. Credit Card, Debit Card)
17
+ # @return [String]
18
+ attr_accessor :payment_type
19
+
20
+ # This is only used for PayPal. During the creation of the user’s profile an
21
+ # ID (clientMetadataId) will have been created by PayPal and stored by
22
+ # Shell. Thus, when PayPal payments are made this ID must be included in
23
+ # order for the payment to be processed
24
+ # @return [String]
25
+ attr_accessor :client_metadata_id
26
+
27
+ # This is only used for ApplePay and AndroidPay. Users using either of these
28
+ # payment methods use device biometrics to authenticate themselves against
29
+ # their respective payment method/provider (e.g. retina, fingerprint).
30
+ # Successful authentication will result in Apple/Android issuing a Payment
31
+ # Token which should be specified here
32
+ # @return [String]
33
+ attr_accessor :token
34
+
35
+ # This is the payment identifier and it is only used for ApplePay and
36
+ # AndroidPay.
37
+ # @return [String]
38
+ attr_accessor :identifier
39
+
40
+ # This is the payment network (e.g. Visa, Mastercard) and it is only used
41
+ # for ApplePay and AndroidPay.
42
+ # @return [String]
43
+ attr_accessor :network
44
+
45
+ # This is only relevant for transactions made by B2B customers using the
46
+ # Shell Card payment method. The ‘cardIdentifier’ is the unique identifier
47
+ # provided by Commercial Fleet and shared with the Shell mobile payments
48
+ # platform. This reference ID is used in interactions with the Commercial
49
+ # Fleet application to retrieve the fueling token - use the cardIdentifier
50
+ # when requesting a DPAN.
51
+ # @return [String]
52
+ attr_accessor :card_identifier
53
+
54
+ # This is only relevant for transactions made by B2B customers using a Shell
55
+ # Card payment method. During set up of the user’s Shell Card it’s possible
56
+ # to configure the card such that users are forced to provide an odometer
57
+ # reading before a Sale can begin processing. This field must be filled if
58
+ # the B2B user’s Shell Card has been configured this way but will be left
59
+ # blank in all other cases.
60
+ # @return [String]
61
+ attr_accessor :odometer
62
+
63
+ # Only relevant if Customer attempting to pay with B2B Shell Card. Customers
64
+ # attempting to pay with a B2B Shell Card may have to specify their Fleet ID
65
+ # as an extra authorisation/security step. Shell Card configuration will
66
+ # determine whether or not Fleet ID needs to be provided. Please note this
67
+ # field is a 6 character numeric field.
68
+ # @return [String]
69
+ attr_accessor :fleet_id
70
+
71
+ # This is only used for transactions made by B2B customers using the Shell
72
+ # Card payment method.
73
+ # In this scenario the expectation is that :\ a B2B entity has been
74
+ # successfully created that includes the external party’s reference for the
75
+ # entity (e.g. Contract Number, VRN, customer email); a new Shell Card (SFC)
76
+ # has been successfully created; and Shell Card and B2B Entity have been
77
+ # linked.
78
+ #
79
+ # externalRefId refers to the 3rd Parties External Reference for the B2B
80
+ # entity and will therefore be used to verify the Customer and SFC before
81
+ # attempting to process a payment using the SFC card
82
+ # @return [String]
83
+ attr_accessor :external_ref_id
84
+
85
+ # A mapping from model property names to API property names.
86
+ def self.names
87
+ @_hash = {} if @_hash.nil?
88
+ @_hash['payment_type'] = 'paymentType'
89
+ @_hash['client_metadata_id'] = 'clientMetadataId'
90
+ @_hash['token'] = 'token'
91
+ @_hash['identifier'] = 'identifier'
92
+ @_hash['network'] = 'network'
93
+ @_hash['card_identifier'] = 'cardIdentifier'
94
+ @_hash['odometer'] = 'odometer'
95
+ @_hash['fleet_id'] = 'fleetId'
96
+ @_hash['external_ref_id'] = 'externalRefId'
97
+ @_hash
98
+ end
99
+
100
+ # An array for optional fields
101
+ def self.optionals
102
+ %w[
103
+ payment_type
104
+ client_metadata_id
105
+ token
106
+ identifier
107
+ network
108
+ odometer
109
+ fleet_id
110
+ external_ref_id
111
+ ]
112
+ end
113
+
114
+ # An array for nullable fields
115
+ def self.nullables
116
+ []
117
+ end
118
+
119
+ def initialize(card_identifier = nil,
120
+ payment_type = SKIP,
121
+ client_metadata_id = SKIP,
122
+ token = SKIP,
123
+ identifier = SKIP,
124
+ network = SKIP,
125
+ odometer = SKIP,
126
+ fleet_id = SKIP,
127
+ external_ref_id = SKIP)
128
+ @payment_type = payment_type unless payment_type == SKIP
129
+ @client_metadata_id = client_metadata_id unless client_metadata_id == SKIP
130
+ @token = token unless token == SKIP
131
+ @identifier = identifier unless identifier == SKIP
132
+ @network = network unless network == SKIP
133
+ @card_identifier = card_identifier
134
+ @odometer = odometer unless odometer == SKIP
135
+ @fleet_id = fleet_id unless fleet_id == SKIP
136
+ @external_ref_id = external_ref_id unless external_ref_id == SKIP
137
+ end
138
+
139
+ # Creates an instance of the object from a hash.
140
+ def self.from_hash(hash)
141
+ return nil unless hash
142
+
143
+ # Extract variables from the hash.
144
+ card_identifier =
145
+ hash.key?('cardIdentifier') ? hash['cardIdentifier'] : nil
146
+ payment_type = hash.key?('paymentType') ? hash['paymentType'] : SKIP
147
+ client_metadata_id =
148
+ hash.key?('clientMetadataId') ? hash['clientMetadataId'] : SKIP
149
+ token = hash.key?('token') ? hash['token'] : SKIP
150
+ identifier = hash.key?('identifier') ? hash['identifier'] : SKIP
151
+ network = hash.key?('network') ? hash['network'] : SKIP
152
+ odometer = hash.key?('odometer') ? hash['odometer'] : SKIP
153
+ fleet_id = hash.key?('fleetId') ? hash['fleetId'] : SKIP
154
+ external_ref_id =
155
+ hash.key?('externalRefId') ? hash['externalRefId'] : SKIP
156
+
157
+ # Create object from extracted values.
158
+ PaymentProperties.new(card_identifier,
159
+ payment_type,
160
+ client_metadata_id,
161
+ token,
162
+ identifier,
163
+ network,
164
+ odometer,
165
+ fleet_id,
166
+ external_ref_id)
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,183 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # PrepareFuelingRequest Model.
8
+ class PrepareFuelingRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The user’s current latitude
13
+ # @return [Float]
14
+ attr_accessor :latitude
15
+
16
+ # The user’s current longitude
17
+ # @return [Float]
18
+ attr_accessor :longitude
19
+
20
+ # The maximum fuelling amount that can be purchased. If the prepare fuelling
21
+ # is successful and the Customer starts fuelling their car, the pump will
22
+ # cut off once this threshold is reached. For B2B customers a maximum
23
+ # ceiling is set against their Shell Card. As a result, this can be left
24
+ # blank for B2B customers. If a value is provided it cannot be zero or lower
25
+ # and values that exceed ceiling will be ignored.
26
+ # @return [Float]
27
+ attr_accessor :maximum_fueling_amount
28
+
29
+ # Expectation is that a user has to be located at a Shell petrol station in
30
+ # order to make this call. A user is recognised as being located at a Shell
31
+ # station if the user’s current location (as determined by GPS) is within
32
+ # 300 meters of a Shell station. Expectation is that requester will have
33
+ # established the Shell petrol station the user is located at prior to
34
+ # making this call by calling Station Locator APIs. The API will use
35
+ # stationId and siteCountry/GPS to verify the user is The user’s current
36
+ # latitude genuinely located at the specified Station. ‘mpp_station_id’ of
37
+ # the Station Locator API should be used. Leading ‘0’ should be dropped and
38
+ # only last four digits, should be used. E.G. for ‘00123’, only ‘0123’
39
+ # should be used and for ‘04567’ only ‘4567’ should be used.
40
+ # @return [String]
41
+ attr_accessor :station_id
42
+
43
+ # A two digit numeric number of the pump as marked on the forecourt (e.g.
44
+ # pump number 12)
45
+ # @return [String]
46
+ attr_accessor :pump_id
47
+
48
+ # Object containing Loyalty details
49
+ # @return [Array[LoyaltyDetails]]
50
+ attr_accessor :loyalty_details
51
+
52
+ # The ID of the source application making this call. Each 3rd Party will be
53
+ # issued with its own sourceApp ID that must be specified correctly here
54
+ # * 3rdParty_App_Archetype
55
+ # @return [String]
56
+ attr_accessor :source_application
57
+
58
+ # The type of device making this call. Permitted values for deviceType:
59
+ # * car
60
+ # * phone
61
+ # @return [String]
62
+ attr_accessor :device_type
63
+
64
+ # Object containing Payment details
65
+ # @return [Array[PaymentDetailsItems]]
66
+ attr_accessor :payment_details
67
+
68
+ # Object containing device details
69
+ # @return [Array[PrepareFuelingRequestDeviceDetailsItems]]
70
+ attr_accessor :device_details
71
+
72
+ # A mapping from model property names to API property names.
73
+ def self.names
74
+ @_hash = {} if @_hash.nil?
75
+ @_hash['latitude'] = 'latitude'
76
+ @_hash['longitude'] = 'longitude'
77
+ @_hash['maximum_fueling_amount'] = 'maximumFuelingAmount'
78
+ @_hash['station_id'] = 'stationId'
79
+ @_hash['pump_id'] = 'pumpId'
80
+ @_hash['loyalty_details'] = 'loyaltyDetails'
81
+ @_hash['source_application'] = 'sourceApplication'
82
+ @_hash['device_type'] = 'deviceType'
83
+ @_hash['payment_details'] = 'paymentDetails'
84
+ @_hash['device_details'] = 'deviceDetails'
85
+ @_hash
86
+ end
87
+
88
+ # An array for optional fields
89
+ def self.optionals
90
+ %w[
91
+ maximum_fueling_amount
92
+ loyalty_details
93
+ device_type
94
+ device_details
95
+ ]
96
+ end
97
+
98
+ # An array for nullable fields
99
+ def self.nullables
100
+ []
101
+ end
102
+
103
+ def initialize(latitude = nil,
104
+ longitude = nil,
105
+ station_id = nil,
106
+ pump_id = nil,
107
+ source_application = nil,
108
+ payment_details = nil,
109
+ maximum_fueling_amount = SKIP,
110
+ loyalty_details = SKIP,
111
+ device_type = SKIP,
112
+ device_details = SKIP)
113
+ @latitude = latitude
114
+ @longitude = longitude
115
+ @maximum_fueling_amount = maximum_fueling_amount unless maximum_fueling_amount == SKIP
116
+ @station_id = station_id
117
+ @pump_id = pump_id
118
+ @loyalty_details = loyalty_details unless loyalty_details == SKIP
119
+ @source_application = source_application
120
+ @device_type = device_type unless device_type == SKIP
121
+ @payment_details = payment_details
122
+ @device_details = device_details unless device_details == SKIP
123
+ end
124
+
125
+ # Creates an instance of the object from a hash.
126
+ def self.from_hash(hash)
127
+ return nil unless hash
128
+
129
+ # Extract variables from the hash.
130
+ latitude = hash.key?('latitude') ? hash['latitude'] : nil
131
+ longitude = hash.key?('longitude') ? hash['longitude'] : nil
132
+ station_id = hash.key?('stationId') ? hash['stationId'] : nil
133
+ pump_id = hash.key?('pumpId') ? hash['pumpId'] : nil
134
+ source_application =
135
+ hash.key?('sourceApplication') ? hash['sourceApplication'] : nil
136
+ # Parameter is an array, so we need to iterate through it
137
+ payment_details = nil
138
+ unless hash['paymentDetails'].nil?
139
+ payment_details = []
140
+ hash['paymentDetails'].each do |structure|
141
+ payment_details << (PaymentDetailsItems.from_hash(structure) if structure)
142
+ end
143
+ end
144
+
145
+ payment_details = nil unless hash.key?('paymentDetails')
146
+ maximum_fueling_amount =
147
+ hash.key?('maximumFuelingAmount') ? hash['maximumFuelingAmount'] : SKIP
148
+ # Parameter is an array, so we need to iterate through it
149
+ loyalty_details = nil
150
+ unless hash['loyaltyDetails'].nil?
151
+ loyalty_details = []
152
+ hash['loyaltyDetails'].each do |structure|
153
+ loyalty_details << (LoyaltyDetails.from_hash(structure) if structure)
154
+ end
155
+ end
156
+
157
+ loyalty_details = SKIP unless hash.key?('loyaltyDetails')
158
+ device_type = hash.key?('deviceType') ? hash['deviceType'] : SKIP
159
+ # Parameter is an array, so we need to iterate through it
160
+ device_details = nil
161
+ unless hash['deviceDetails'].nil?
162
+ device_details = []
163
+ hash['deviceDetails'].each do |structure|
164
+ device_details << (PrepareFuelingRequestDeviceDetailsItems.from_hash(structure) if structure)
165
+ end
166
+ end
167
+
168
+ device_details = SKIP unless hash.key?('deviceDetails')
169
+
170
+ # Create object from extracted values.
171
+ PrepareFuelingRequest.new(latitude,
172
+ longitude,
173
+ station_id,
174
+ pump_id,
175
+ source_application,
176
+ payment_details,
177
+ maximum_fueling_amount,
178
+ loyalty_details,
179
+ device_type,
180
+ device_details)
181
+ end
182
+ end
183
+ end
@@ -0,0 +1,95 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # PrepareFuelingRequestDeviceDetailsItems Model.
8
+ class PrepareFuelingRequestDeviceDetailsItems < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # This is the mobile device’s unique ID (Vendor ID for iOS vs. Android ID
13
+ # for Android). This is only used for transactions made via the Shell Mobile
14
+ # App and will therefore be mandatory for requests originating from Shell’s
15
+ # mobile app but can be ignored by all other parties.
16
+ # @return [String]
17
+ attr_accessor :device_id
18
+
19
+ # This is the mobile device’s model (machine name/systemInfo for iOS vs.
20
+ # Build.MODEL for Android). This is only used for transactions made via the
21
+ # Shell Mobile App and will therefore be mandatory for requests originating
22
+ # from Shell’s mobile app but can be ignored by all other parties.
23
+ # @return [String]
24
+ attr_accessor :model
25
+
26
+ # This is the mobile device’s OS Version. This is only used for transactions
27
+ # made via the Shell Mobile App and will therefore be mandatory for requests
28
+ # originating from Shell’s mobile app but can be ignored by all other
29
+ # parties.
30
+ # @return [String]
31
+ attr_accessor :os_version
32
+
33
+ # This is only used for transactions made via Android versions of the Shell
34
+ # Mobile App and will therefore be mandatory for requests originating from
35
+ # Shell’s Android mobile app but can be ignored by all other devices and/or
36
+ # parties.
37
+ # This field is used to capture the Shell App build that was used to make
38
+ # this call.
39
+ # @return [String]
40
+ attr_accessor :other_device_information
41
+
42
+ # A mapping from model property names to API property names.
43
+ def self.names
44
+ @_hash = {} if @_hash.nil?
45
+ @_hash['device_id'] = 'deviceId'
46
+ @_hash['model'] = 'model'
47
+ @_hash['os_version'] = 'osVersion'
48
+ @_hash['other_device_information'] = 'otherDeviceInformation'
49
+ @_hash
50
+ end
51
+
52
+ # An array for optional fields
53
+ def self.optionals
54
+ %w[
55
+ device_id
56
+ model
57
+ os_version
58
+ other_device_information
59
+ ]
60
+ end
61
+
62
+ # An array for nullable fields
63
+ def self.nullables
64
+ []
65
+ end
66
+
67
+ def initialize(device_id = SKIP,
68
+ model = SKIP,
69
+ os_version = SKIP,
70
+ other_device_information = SKIP)
71
+ @device_id = device_id unless device_id == SKIP
72
+ @model = model unless model == SKIP
73
+ @os_version = os_version unless os_version == SKIP
74
+ @other_device_information = other_device_information unless other_device_information == SKIP
75
+ end
76
+
77
+ # Creates an instance of the object from a hash.
78
+ def self.from_hash(hash)
79
+ return nil unless hash
80
+
81
+ # Extract variables from the hash.
82
+ device_id = hash.key?('deviceId') ? hash['deviceId'] : SKIP
83
+ model = hash.key?('model') ? hash['model'] : SKIP
84
+ os_version = hash.key?('osVersion') ? hash['osVersion'] : SKIP
85
+ other_device_information =
86
+ hash.key?('otherDeviceInformation') ? hash['otherDeviceInformation'] : SKIP
87
+
88
+ # Create object from extracted values.
89
+ PrepareFuelingRequestDeviceDetailsItems.new(device_id,
90
+ model,
91
+ os_version,
92
+ other_device_information)
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,66 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # The response of prepare fueling returns
8
+ class PrepareFuelingResponse < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The unique identifier of the Order. NB at this stage the Customer hasn’t
13
+ # actually bought anything so there’s no formal transaction associated with
14
+ # the Order. A transaction is not processed until refuelling has been
15
+ # completed successfully and will be triggered by returning the nozzle to
16
+ # the pump.
17
+ # @return [String]
18
+ attr_accessor :mpp_transaction_id
19
+
20
+ # An array of Strings that contain the list of products that the user can
21
+ # purchase at the specified Station/Pump. The text is localized based on the
22
+ # country.
23
+ # @return [Array[String]]
24
+ attr_accessor :products
25
+
26
+ # A mapping from model property names to API property names.
27
+ def self.names
28
+ @_hash = {} if @_hash.nil?
29
+ @_hash['mpp_transaction_id'] = 'mppTransactionId'
30
+ @_hash['products'] = 'products'
31
+ @_hash
32
+ end
33
+
34
+ # An array for optional fields
35
+ def self.optionals
36
+ %w[
37
+ products
38
+ ]
39
+ end
40
+
41
+ # An array for nullable fields
42
+ def self.nullables
43
+ []
44
+ end
45
+
46
+ def initialize(mpp_transaction_id = nil,
47
+ products = SKIP)
48
+ @mpp_transaction_id = mpp_transaction_id
49
+ @products = products unless products == SKIP
50
+ end
51
+
52
+ # Creates an instance of the object from a hash.
53
+ def self.from_hash(hash)
54
+ return nil unless hash
55
+
56
+ # Extract variables from the hash.
57
+ mpp_transaction_id =
58
+ hash.key?('mppTransactionId') ? hash['mppTransactionId'] : nil
59
+ products = hash.key?('products') ? hash['products'] : SKIP
60
+
61
+ # Create object from extracted values.
62
+ PrepareFuelingResponse.new(mpp_transaction_id,
63
+ products)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,11 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ require 'date'
7
+ module ShellEv
8
+ # A utility that supports dateTime conversion to different formats
9
+ class DateTimeHelper < CoreLibrary::DateTimeHelper
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # A utility to allow users to set the content-type for files
8
+ class FileWrapper < CoreLibrary::FileWrapper
9
+ # The constructor.
10
+ # @param [File] file The file to be sent in the request.
11
+ # @param [string] content_type The content type of the provided file.
12
+ def initialize(file, content_type: 'application/octet-stream')
13
+ super
14
+ end
15
+ end
16
+ end