digital-payments-sdk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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