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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 85269c005e73dd5a3780e4bf7b5c4cbe4b1740e04b07fe7a032b90ecd90586c3
4
+ data.tar.gz: 1327313a9dfaf08dec8fdad95552d4310e201b5c57d91285623b40cf3bd06546
5
+ SHA512:
6
+ metadata.gz: e5a7a8e729813efedc83746a546e425037a0ab8b206e6491c413fff42293d67873a617c233a0514bebbee614275c5838e5c84d51eb5f009b6c3566ea12c99d48
7
+ data.tar.gz: 6096cd6065c02c13f4d24e076f6aea2d57ad2900f4fc252787e4dd334c0bfe7a6b3cf574e076c0d5ece4ccf925b0eaf982757fa17e1006297ea636046ccdf597
data/LICENSE ADDED
@@ -0,0 +1,28 @@
1
+ License:
2
+ ========
3
+ The MIT License (MIT)
4
+ http://opensource.org/licenses/MIT
5
+
6
+ Copyright (c) 2014 - 2024 APIMATIC Limited
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in
16
+ all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
+ THE SOFTWARE.
25
+
26
+ Trade Mark:
27
+ ==========
28
+ APIMATIC is a trade mark for APIMATIC Limited
data/README.md ADDED
@@ -0,0 +1,85 @@
1
+
2
+ # Getting Started with Shell EV
3
+
4
+ ## Introduction
5
+
6
+ The APIs detailed within this document will enable Shell's Fleet Solutions Customers to digitalize Shell Card/s and use them to pay to refuel their vehicles at Shell Stations.
7
+
8
+ ## Install the Package
9
+
10
+ Install the gem from the command line:
11
+
12
+ ```ruby
13
+ gem install digital-payments-sdk -v 1.0.0
14
+ ```
15
+
16
+ Or add the gem to your Gemfile and run `bundle`:
17
+
18
+ ```ruby
19
+ gem 'digital-payments-sdk', '1.0.0'
20
+ ```
21
+
22
+ For additional gem details, see the [RubyGems page for the digital-payments-sdk gem](https://rubygems.org/gems/digital-payments-sdk/versions/1.0.0).
23
+
24
+ ## Test the SDK
25
+
26
+ To run the tests, navigate to the root directory of the SDK in your terminal and execute the following command:
27
+
28
+ ```
29
+ rake
30
+ ```
31
+
32
+ ## Initialize the API Client
33
+
34
+ **_Note:_** Documentation for the client can be found [here.](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/client.md)
35
+
36
+ The following parameters are configurable for the API Client:
37
+
38
+ | Parameter | Type | Description |
39
+ | --- | --- | --- |
40
+ | `connection` | `Faraday::Connection` | The Faraday connection object passed by the SDK user for making requests |
41
+ | `adapter` | `Faraday::Adapter` | The Faraday adapter object passed by the SDK user for performing http requests |
42
+ | `timeout` | `Float` | The value to use for connection timeout. <br> **Default: 60** |
43
+ | `max_retries` | `Integer` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
44
+ | `retry_interval` | `Float` | Pause in seconds between retries. <br> **Default: 1** |
45
+ | `backoff_factor` | `Float` | The amount to multiply each successive retry's interval amount by in order to provide backoff. <br> **Default: 2** |
46
+ | `retry_statuses` | `Array` | A list of HTTP statuses to retry. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
47
+ | `retry_methods` | `Array` | A list of HTTP methods to retry. <br> **Default: %i[get put]** |
48
+ | `http_callback` | `HttpCallBack` | The Http CallBack allows defining callables for pre and post API calls. |
49
+ | `mpp_token_credentials` | [`MppTokenCredentials`](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/$a/https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/custom-header-signature.md) | The credential object for Custom Header Signature |
50
+ | `o_auth_token_post_credentials` | [`OAuthTokenPostCredentials`](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/$a/https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/custom-header-signature-1.md) | The credential object for Custom Header Signature |
51
+
52
+ The API client can be initialized as follows:
53
+
54
+ ```ruby
55
+ client = ShellEv::Client.new(
56
+ mpp_token_credentials: MppTokenCredentials.new(
57
+ authorization: 'Authorization'
58
+ ),
59
+ o_auth_token_post_credentials: OAuthTokenPostCredentials.new(
60
+ x_apigee_authorization: 'X-Apigee-Authorization'
61
+ )
62
+ )
63
+ ```
64
+
65
+ ## Authorization
66
+
67
+ This API uses the following authentication schemes.
68
+
69
+ * [`MppToken (Custom Header Signature)`](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/$a/https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/custom-header-signature.md)
70
+ * [`oAuthTokenPost (Custom Header Signature)`](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/$a/https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/custom-header-signature-1.md)
71
+
72
+ ## List of APIs
73
+
74
+ * [Shell API Platform Security Authentication](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/controllers/shell-api-platform-security-authentication.md)
75
+ * [Digital Payment Enablement](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/controllers/digital-payment-enablement.md)
76
+ * [Station Locator](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/controllers/station-locator.md)
77
+ * [Partner Notification](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/controllers/partner-notification.md)
78
+ * [Fueling](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/controllers/fueling.md)
79
+
80
+ ## Classes Documentation
81
+
82
+ * [Utility Classes](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/utility-classes.md)
83
+ * [HttpResponse](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/http-response.md)
84
+ * [HttpRequest](https://www.github.com/sdks-io/digital-payments-ruby-sdk/tree/1.0.0/doc/http-request.md)
85
+
@@ -0,0 +1,10 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # API utility class
8
+ class APIHelper < CoreLibrary::ApiHelper
9
+ end
10
+ end
@@ -0,0 +1,86 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # shell_ev client class.
8
+ class Client
9
+ include CoreLibrary
10
+ attr_reader :config, :auth_managers
11
+
12
+ # Access to shell_api_platform_security_authentication controller.
13
+ # @return [ShellAPIPlatformSecurityAuthenticationController] Returns the controller instance.
14
+ def shell_api_platform_security_authentication
15
+ @shell_api_platform_security_authentication ||= ShellAPIPlatformSecurityAuthenticationController.new @global_configuration
16
+ end
17
+
18
+ # Access to digital_payment_enablement controller.
19
+ # @return [DigitalPaymentEnablementController] Returns the controller instance.
20
+ def digital_payment_enablement
21
+ @digital_payment_enablement ||= DigitalPaymentEnablementController.new @global_configuration
22
+ end
23
+
24
+ # Access to station_locator controller.
25
+ # @return [StationLocatorController] Returns the controller instance.
26
+ def station_locator
27
+ @station_locator ||= StationLocatorController.new @global_configuration
28
+ end
29
+
30
+ # Access to fueling controller.
31
+ # @return [FuelingController] Returns the controller instance.
32
+ def fueling
33
+ @fueling ||= FuelingController.new @global_configuration
34
+ end
35
+
36
+ # Access to partner_notification controller.
37
+ # @return [PartnerNotificationController] Returns the controller instance.
38
+ def partner_notification
39
+ @partner_notification ||= PartnerNotificationController.new @global_configuration
40
+ end
41
+
42
+ def initialize(
43
+ connection: nil, adapter: :net_http_persistent, timeout: 60,
44
+ max_retries: 0, retry_interval: 1, backoff_factor: 2,
45
+ retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
46
+ retry_methods: %i[get put], http_callback: nil,
47
+ environment: Environment::PRODUCTION, mpp_token_credentials: nil,
48
+ o_auth_token_post_credentials: nil, config: nil
49
+ )
50
+ @config = if config.nil?
51
+ Configuration.new(
52
+ connection: connection, adapter: adapter, timeout: timeout,
53
+ max_retries: max_retries, retry_interval: retry_interval,
54
+ backoff_factor: backoff_factor,
55
+ retry_statuses: retry_statuses,
56
+ retry_methods: retry_methods, http_callback: http_callback,
57
+ environment: environment,
58
+ mpp_token_credentials: mpp_token_credentials,
59
+ o_auth_token_post_credentials: o_auth_token_post_credentials
60
+ )
61
+ else
62
+ config
63
+ end
64
+
65
+ @global_configuration = GlobalConfiguration.new(client_configuration: @config)
66
+ .base_uri_executor(@config.method(:get_base_uri))
67
+ .global_errors(BaseController::GLOBAL_ERRORS)
68
+ .user_agent(BaseController.user_agent)
69
+
70
+ initialize_auth_managers(@global_configuration)
71
+ @global_configuration = @global_configuration.auth_managers(@auth_managers)
72
+ end
73
+
74
+ # Initializes the auth managers hash used for authenticating API calls.
75
+ # @param [GlobalConfiguration] global_config The global configuration of the SDK)
76
+ def initialize_auth_managers(global_config)
77
+ @auth_managers = {}
78
+ http_client_config = global_config.client_configuration
79
+ %w[MppToken oAuthTokenPost].each { |auth| @auth_managers[auth] = nil }
80
+ @auth_managers['MppToken'] = MppToken.new(http_client_config.mpp_token_credentials)
81
+ @auth_managers['oAuthTokenPost'] = OAuthTokenPost.new(
82
+ http_client_config.o_auth_token_post_credentials
83
+ )
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,104 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # An enum for SDK environments.
8
+ class Environment
9
+ # PRODUCTION: Digital Payment APIs
10
+ ENVIRONMENT = [
11
+ PRODUCTION = 'production'.freeze
12
+ ].freeze
13
+ end
14
+
15
+ # An enum for API servers.
16
+ class Server
17
+ SERVER = [
18
+ DEFAULT = 'default'.freeze
19
+ ].freeze
20
+ end
21
+
22
+ # All configuration including auth info and base URI for the API access
23
+ # are configured in this class.
24
+ class Configuration < CoreLibrary::HttpClientConfiguration
25
+ # The attribute readers for properties.
26
+ attr_reader :environment, :mpp_token_credentials,
27
+ :o_auth_token_post_credentials
28
+
29
+ class << self
30
+ attr_reader :environments
31
+ end
32
+
33
+ def initialize(
34
+ connection: nil, adapter: :net_http_persistent, timeout: 60,
35
+ max_retries: 0, retry_interval: 1, backoff_factor: 2,
36
+ retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
37
+ retry_methods: %i[get put], http_callback: nil,
38
+ environment: Environment::PRODUCTION, mpp_token_credentials: nil,
39
+ o_auth_token_post_credentials: nil
40
+ )
41
+
42
+ super connection: connection, adapter: adapter, timeout: timeout,
43
+ max_retries: max_retries, retry_interval: retry_interval,
44
+ backoff_factor: backoff_factor, retry_statuses: retry_statuses,
45
+ retry_methods: retry_methods, http_callback: http_callback
46
+
47
+ # Current API environment
48
+ @environment = String(environment)
49
+
50
+ # The object holding Custom Header Signature credentials
51
+ @mpp_token_credentials = mpp_token_credentials
52
+
53
+ # The object holding Custom Header Signature credentials
54
+ @o_auth_token_post_credentials = o_auth_token_post_credentials
55
+
56
+ # The Http Client to use for making requests.
57
+ set_http_client CoreLibrary::FaradayClient.new(self)
58
+ end
59
+
60
+ def clone_with(connection: nil, adapter: nil, timeout: nil,
61
+ max_retries: nil, retry_interval: nil, backoff_factor: nil,
62
+ retry_statuses: nil, retry_methods: nil, http_callback: nil,
63
+ environment: nil, mpp_token_credentials: nil,
64
+ o_auth_token_post_credentials: nil)
65
+ connection ||= self.connection
66
+ adapter ||= self.adapter
67
+ timeout ||= self.timeout
68
+ max_retries ||= self.max_retries
69
+ retry_interval ||= self.retry_interval
70
+ backoff_factor ||= self.backoff_factor
71
+ retry_statuses ||= self.retry_statuses
72
+ retry_methods ||= self.retry_methods
73
+ http_callback ||= self.http_callback
74
+ environment ||= self.environment
75
+ mpp_token_credentials ||= self.mpp_token_credentials
76
+ o_auth_token_post_credentials ||= self.o_auth_token_post_credentials
77
+
78
+ Configuration.new(
79
+ connection: connection, adapter: adapter, timeout: timeout,
80
+ max_retries: max_retries, retry_interval: retry_interval,
81
+ backoff_factor: backoff_factor, retry_statuses: retry_statuses,
82
+ retry_methods: retry_methods, http_callback: http_callback,
83
+ environment: environment, mpp_token_credentials: mpp_token_credentials,
84
+ o_auth_token_post_credentials: o_auth_token_post_credentials
85
+ )
86
+ end
87
+
88
+
89
+ # All the environments the SDK can run in.
90
+ ENVIRONMENTS = {
91
+ Environment::PRODUCTION => {
92
+ Server::DEFAULT => 'https://api-test.shell.com/ShellDigitalCommerceServices/Payments/B2B/Partner'
93
+ }
94
+ }.freeze
95
+
96
+ # Generates the appropriate base URI for the environment and the server.
97
+ # @param [Configuration::Server] server The server enum for which the base URI is
98
+ # required.
99
+ # @return [String] The base URI.
100
+ def get_base_uri(server = Server::DEFAULT)
101
+ ENVIRONMENTS[environment][server].clone
102
+ end
103
+ end
104
+ 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
+ # BaseController.
8
+ class BaseController
9
+ include CoreLibrary
10
+ attr_accessor :config, :http_call_back
11
+
12
+ def self.user_agent
13
+ 'APIMATIC 3.0'
14
+ end
15
+
16
+
17
+ GLOBAL_ERRORS = {
18
+ 'default' => ErrorCase.new
19
+ .error_message('HTTP response not OK.')
20
+ .exception_type(APIException)
21
+ }.freeze
22
+
23
+ # Initialization constructor.
24
+ # @param [GlobalConfiguration] global_configuration The instance of GlobalConfiguration.
25
+ def initialize(global_configuration)
26
+ @global_configuration = global_configuration
27
+ @config = @global_configuration.client_configuration
28
+ @http_call_back = @config.http_callback
29
+ @api_call = ApiCall.new(@global_configuration)
30
+ end
31
+
32
+ # Creates a new builder for the Api Call instance.
33
+ # @return [ApiCall] The instance of ApiCall.
34
+ def new_api_call_builder
35
+ @api_call.new_builder
36
+ end
37
+
38
+ # Creates a new instance of the request builder.
39
+ # @param [String] http_method The HTTP method to use in the request.
40
+ # @param [String] path The endpoint path to use in the request.
41
+ # @param [String] server The server to extract the base uri for the request.
42
+ # @return [RequestBuilder] The instance of RequestBuilder.
43
+ def new_request_builder(http_method, path, server)
44
+ RequestBuilder.new
45
+ .http_method(http_method)
46
+ .path(path)
47
+ .server(server)
48
+ end
49
+
50
+ # Creates a new instance of the response handler.
51
+ # @return [ResponseHandler] The instance of ResponseHandler.
52
+ def new_response_handler
53
+ ResponseHandler.new
54
+ end
55
+
56
+ # Creates a new instance of the parameter.
57
+ # @param [String|optional] key The key of the parameter.
58
+ # @param [Object] value The value of the parameter.
59
+ # @return [Parameter] The instance of Parameter.
60
+ def new_parameter(value, key: nil)
61
+ Parameter.new
62
+ .key(key)
63
+ .value(value)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,56 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # DigitalPaymentEnablementController
8
+ class DigitalPaymentEnablementController < BaseController
9
+ # Generates a DPAN and stores the relationship between the Reference ID,
10
+ # DPAN and the real PAN. This method is called during the customer
11
+ # registration process, ahead of any payment. The Reference ID is an
12
+ # identifier chosen by the client system for mobile payment registration. It
13
+ # must be unique in context of the client system, and is the key to
14
+ # obtaining and managing the payment details later.
15
+ # @param [MobilePaymentRegistrationRequest] body Required parameter:
16
+ # Example:
17
+ # @return [PaymentEnablementResponse] response from the API call
18
+ def mpay_v1_tokens_ref_put(body)
19
+ new_api_call_builder
20
+ .request(new_request_builder(HttpMethodEnum::PUT,
21
+ '/PaymentEnablement/v1/ref',
22
+ Server::DEFAULT)
23
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
24
+ .body_param(new_parameter(body))
25
+ .header_param(new_parameter('application/json', key: 'accept'))
26
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
27
+ .auth(Single.new('oAuthTokenPost')))
28
+ .response(new_response_handler
29
+ .deserializer(APIHelper.method(:custom_type_deserializer))
30
+ .deserialize_into(PaymentEnablementResponse.method(:from_hash))
31
+ .local_error('400',
32
+ 'Error Occurred. The server cannot or will not process the'\
33
+ ' request due to an apparent client error (e.g., malformed'\
34
+ ' request syntax, invalid request message).',
35
+ PaymentEnablementErrorResponseException)
36
+ .local_error('401',
37
+ 'Unauthorized. The request has not been applied because it lacks'\
38
+ ' valid authentication credentials for the target resource.',
39
+ APIException)
40
+ .local_error('403',
41
+ 'Forbidden. The server understood the request but refuses to'\
42
+ ' authorize it.',
43
+ APIException)
44
+ .local_error('404',
45
+ 'Not Found. The origin server did not find a current'\
46
+ ' representation for the target resource or is not willing to'\
47
+ ' disclose that one exists.',
48
+ APIException)
49
+ .local_error('500',
50
+ 'Internal Server Error. The server encountered an unexpected'\
51
+ ' condition that prevented it from fulfilling the request.',
52
+ APIException))
53
+ .execute
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,126 @@
1
+ # shell_ev
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module ShellEv
7
+ # FuelingController
8
+ class FuelingController < BaseController
9
+ # The Digital Payments Service enables 3rd Parties to trigger the refuel
10
+ # process which, if successful, will unlock a pump/nozzle ready for
11
+ # fuelling. Enables a 3rd party to request an access token to start using
12
+ # fueling.
13
+ # APIs
14
+ # @param [String] grant_type Required parameter: In OAuth 2.0, the term
15
+ # grant type refers to the way an application gets an access token. OAuth
16
+ # 2.0 defines several grant types, including the authorization code flow.
17
+ # @param [String] client_id Required parameter: After registering your app,
18
+ # you will receive a client ID and a client secret. The client ID is
19
+ # considered public information, and is used to build login URLs, or
20
+ # included in Javascript source code on a page.
21
+ # @param [String] client_secret Required parameter: After registering your
22
+ # app, you will receive a client ID and a client secret. The client ID is
23
+ # considered public information, and is used to build login URLs, or
24
+ # included in Javascript source code on a page. The client secret must be
25
+ # kept confidential.
26
+ # @return [MppAccesTokenResponse] response from the API call
27
+ def mpp_token(grant_type,
28
+ client_id,
29
+ client_secret)
30
+ new_api_call_builder
31
+ .request(new_request_builder(HttpMethodEnum::POST,
32
+ '/Fueling/v1/oauth/token',
33
+ Server::DEFAULT)
34
+ .form_param(new_parameter(grant_type, key: 'grant_type'))
35
+ .form_param(new_parameter(client_id, key: 'client_id'))
36
+ .form_param(new_parameter(client_secret, key: 'client_secret'))
37
+ .header_param(new_parameter('application/x-www-form-urlencoded', key: 'content-type'))
38
+ .header_param(new_parameter('application/json', key: 'accept'))
39
+ .auth(Single.new('oAuthTokenPost')))
40
+ .response(new_response_handler
41
+ .deserializer(APIHelper.method(:custom_type_deserializer))
42
+ .deserialize_into(MppAccesTokenResponse.method(:from_hash))
43
+ .local_error('401',
44
+ 'Unauthorized. The request has not been applied because it lacks'\
45
+ ' valid authentication credentials for the target resource.',
46
+ MppAccesTokenErrorResponseException))
47
+ .execute
48
+ end
49
+
50
+ # Enables a 3rd party to request to unlock a pump so that they may fill up
51
+ # to a pre-authorised limit. The fuel types that are unlocked may also be
52
+ # determined by permitted fuels stored against the user/entity profile
53
+ # @param [String] site_country Required parameter: Country ISO code
54
+ # @param [String] currency Required parameter: Currency ISO code
55
+ # @param [PrepareFuelingRequest] body Required parameter: Example:
56
+ # @return [PrepareFuelingResponse] response from the API call
57
+ def mpp_prepare_fueling(site_country,
58
+ currency,
59
+ body)
60
+ new_api_call_builder
61
+ .request(new_request_builder(HttpMethodEnum::POST,
62
+ '/Fueling/v1/fueling',
63
+ Server::DEFAULT)
64
+ .query_param(new_parameter(site_country, key: 'siteCountry'))
65
+ .query_param(new_parameter(currency, key: 'currency'))
66
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
67
+ .body_param(new_parameter(body))
68
+ .header_param(new_parameter('application/json', key: 'accept'))
69
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
70
+ .auth(And.new('oAuthTokenPost', 'MppToken')))
71
+ .response(new_response_handler
72
+ .deserializer(APIHelper.method(:custom_type_deserializer))
73
+ .deserialize_into(PrepareFuelingResponse.method(:from_hash))
74
+ .local_error('400',
75
+ 'Error Occurred. Request did not include bearer token or token'\
76
+ ' provided and is invalid.',
77
+ APIException)
78
+ .local_error('401',
79
+ 'Unauthorized',
80
+ APIException)
81
+ .local_error('403',
82
+ 'Forbidden. Requestor is not permitted to call the API',
83
+ APIException)
84
+ .local_error('404',
85
+ 'Not Found. Request received by the server but requested URL not'\
86
+ ' found',
87
+ APIException))
88
+ .execute
89
+ end
90
+
91
+ # Enables a partner user to cancel pump reservation from the App
92
+ # @param [String] mpp_transaction_id Required parameter: The ID of the
93
+ # transaction that’s being cancelled
94
+ # @return [void] response from the API call
95
+ def mpp_cancel_fueling(mpp_transaction_id)
96
+ new_api_call_builder
97
+ .request(new_request_builder(HttpMethodEnum::DELETE,
98
+ '/Fueling/v1/fueling/{mppTransactionId}',
99
+ Server::DEFAULT)
100
+ .template_param(new_parameter(mpp_transaction_id, key: 'mppTransactionId')
101
+ .should_encode(true))
102
+ .auth(And.new('oAuthTokenPost', 'MppToken')))
103
+ .response(new_response_handler
104
+ .is_response_void(true)
105
+ .local_error('400',
106
+ 'Error Occurred. The server cannot or will not process the'\
107
+ ' request due to an apparent client error (e.g., malformed'\
108
+ ' request syntax, invalid request message). Please see below for'\
109
+ ' information regarding structure of Response Body vs. all'\
110
+ ' possible errors that could be returned.',
111
+ CancelFuelingErrorResponseErrorException)
112
+ .local_error('401',
113
+ 'Unauthorized. Request did not include bearer token or token'\
114
+ ' provided and is invalid.',
115
+ CancelFuelingErrorResponseErrorException)
116
+ .local_error('403',
117
+ 'Forbidden. Requestor is not permitted to call the API.',
118
+ APIException)
119
+ .local_error('404',
120
+ 'Not Found. Request received by the server but requested URL not'\
121
+ ' found',
122
+ APIException))
123
+ .execute
124
+ end
125
+ end
126
+ 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
+ # PartnerNotificationController
8
+ class PartnerNotificationController < BaseController
9
+ # To access the Partner’s endpoints, for sending callback messages, Shell
10
+ # will need to connect to the Partner API end points. It is recemmended that
11
+ # the partner offers OAuth 2.0 as a standard for call back APIs and will
12
+ # require the OAuth 2.0 token for authentication. Note this needs to be
13
+ # implemented over HTTPS
14
+ # @param [String] grant_type Required parameter: In OAuth 2.0, the term
15
+ # grant typee refers to the way an application gets an access token. OAuth
16
+ # 2.0 defines several grant types, including the authorization code flow.
17
+ # @param [String] client_id Required parameter: After registering your app,
18
+ # you will receive a client ID and a client secret. The client ID is
19
+ # considered public information, and is used to build login URLs, or
20
+ # included in Javascript source code on a page.
21
+ # @param [String] client_secret Required parameter: After registering your
22
+ # app, you will receive a client ID and a client secret. The client ID is
23
+ # considered public information, and is used to build login URLs, or
24
+ # included in Javascript source code on a page. The client secret must be
25
+ # kept confidential.
26
+ # @return [AccessTokenResponse] response from the API call
27
+ def partner_token(grant_type,
28
+ client_id,
29
+ client_secret)
30
+ new_api_call_builder
31
+ .request(new_request_builder(HttpMethodEnum::POST,
32
+ '/token',
33
+ Server::DEFAULT)
34
+ .form_param(new_parameter(grant_type, key: 'grant_type'))
35
+ .form_param(new_parameter(client_id, key: 'client_id'))
36
+ .form_param(new_parameter(client_secret, key: 'client_secret'))
37
+ .header_param(new_parameter('application/x-www-form-urlencoded', key: 'content-type'))
38
+ .header_param(new_parameter('application/json', key: 'accept')))
39
+ .response(new_response_handler
40
+ .deserializer(APIHelper.method(:custom_type_deserializer))
41
+ .deserialize_into(AccessTokenResponse.method(:from_hash))
42
+ .local_error('401',
43
+ 'Unauthorized',
44
+ AccessTokenErrorException))
45
+ .execute
46
+ end
47
+
48
+ # Enables Shell to inform partner of the successful completion of a
49
+ # transaction. Note this needs to be implemented over HTTPS
50
+ # @param [FinaliseFuelingRequest] body Optional parameter: Example:
51
+ # @return [void] response from the API call
52
+ def finalise_fueling(body: nil)
53
+ new_api_call_builder
54
+ .request(new_request_builder(HttpMethodEnum::POST,
55
+ '/finaliseFueling',
56
+ Server::DEFAULT)
57
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
58
+ .body_param(new_parameter(body))
59
+ .body_serializer(proc do |param| param.to_json unless param.nil? end))
60
+ .response(new_response_handler
61
+ .is_response_void(true)
62
+ .local_error('400',
63
+ 'Bad Request',
64
+ APIException)
65
+ .local_error('401',
66
+ 'Unauthorized',
67
+ APIException))
68
+ .execute
69
+ end
70
+
71
+ # Enables Shell to inform partner that a Mobile Payment transaction has been
72
+ # cancelled by Shell as an error/issue occured. Note this needs to be
73
+ # implemented over HTTPS
74
+ # @param [CancelFuelingRequest] body Optional parameter: Example:
75
+ # @return [void] response from the API call
76
+ def cancel_fueling(body: nil)
77
+ new_api_call_builder
78
+ .request(new_request_builder(HttpMethodEnum::POST,
79
+ '/cancelFueling',
80
+ Server::DEFAULT)
81
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
82
+ .body_param(new_parameter(body))
83
+ .body_serializer(proc do |param| param.to_json unless param.nil? end))
84
+ .response(new_response_handler
85
+ .is_response_void(true)
86
+ .local_error('400',
87
+ 'Bad Request',
88
+ APIException)
89
+ .local_error('401',
90
+ 'Unauthorized',
91
+ APIException))
92
+ .execute
93
+ end
94
+ end
95
+ end