apimatic-pnl-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 (172) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +164 -0
  4. data/bin/console +15 -0
  5. data/lib/postnl_ecommerce/api_helper.rb +10 -0
  6. data/lib/postnl_ecommerce/client.rb +126 -0
  7. data/lib/postnl_ecommerce/configuration.rb +195 -0
  8. data/lib/postnl_ecommerce/controllers/barcode_controller.rb +71 -0
  9. data/lib/postnl_ecommerce/controllers/base_controller.rb +60 -0
  10. data/lib/postnl_ecommerce/controllers/checkout_controller.rb +45 -0
  11. data/lib/postnl_ecommerce/controllers/confirming_controller.rb +45 -0
  12. data/lib/postnl_ecommerce/controllers/deliverydate_controller.rb +233 -0
  13. data/lib/postnl_ecommerce/controllers/labelling_controller.rb +52 -0
  14. data/lib/postnl_ecommerce/controllers/locations_controller.rb +271 -0
  15. data/lib/postnl_ecommerce/controllers/postalcode_check_controller.rb +60 -0
  16. data/lib/postnl_ecommerce/controllers/shipment_controller.rb +52 -0
  17. data/lib/postnl_ecommerce/controllers/shipping_status_controller.rb +222 -0
  18. data/lib/postnl_ecommerce/controllers/timeframes_controller.rb +90 -0
  19. data/lib/postnl_ecommerce/exceptions/api_exception.rb +21 -0
  20. data/lib/postnl_ecommerce/exceptions/barcode_response_invalid_exception.rb +57 -0
  21. data/lib/postnl_ecommerce/exceptions/confirming_response_error_exception.rb +55 -0
  22. data/lib/postnl_ecommerce/exceptions/internal_server_error_exception.rb +46 -0
  23. data/lib/postnl_ecommerce/exceptions/invalid_request_exception.rb +62 -0
  24. data/lib/postnl_ecommerce/exceptions/labelling_response_invalid_exception.rb +57 -0
  25. data/lib/postnl_ecommerce/exceptions/method_not_allowed_only_get_exception.rb +53 -0
  26. data/lib/postnl_ecommerce/exceptions/method_not_allowed_only_get_post_exception.rb +53 -0
  27. data/lib/postnl_ecommerce/exceptions/method_not_allowed_only_post_exception.rb +53 -0
  28. data/lib/postnl_ecommerce/exceptions/postalcode_check_response_invalid_exception.rb +55 -0
  29. data/lib/postnl_ecommerce/exceptions/too_many_requests_exception.rb +53 -0
  30. data/lib/postnl_ecommerce/exceptions/unauthorized_exception.rb +53 -0
  31. data/lib/postnl_ecommerce/http/api_response.rb +19 -0
  32. data/lib/postnl_ecommerce/http/auth/custom_header_authentication.rb +52 -0
  33. data/lib/postnl_ecommerce/http/http_call_back.rb +10 -0
  34. data/lib/postnl_ecommerce/http/http_method_enum.rb +10 -0
  35. data/lib/postnl_ecommerce/http/http_request.rb +10 -0
  36. data/lib/postnl_ecommerce/http/http_response.rb +10 -0
  37. data/lib/postnl_ecommerce/http/proxy_settings.rb +22 -0
  38. data/lib/postnl_ecommerce/models/address.rb +240 -0
  39. data/lib/postnl_ecommerce/models/address_type_enum.rb +36 -0
  40. data/lib/postnl_ecommerce/models/amount.rb +138 -0
  41. data/lib/postnl_ecommerce/models/barcode_error.rb +71 -0
  42. data/lib/postnl_ecommerce/models/barcode_response.rb +62 -0
  43. data/lib/postnl_ecommerce/models/base_model.rb +110 -0
  44. data/lib/postnl_ecommerce/models/checkout_address.rb +120 -0
  45. data/lib/postnl_ecommerce/models/checkout_cut_off_day_enum.rb +61 -0
  46. data/lib/postnl_ecommerce/models/checkout_cut_off_time.rb +91 -0
  47. data/lib/postnl_ecommerce/models/checkout_cut_off_type_enum.rb +40 -0
  48. data/lib/postnl_ecommerce/models/checkout_delivery_option.rb +81 -0
  49. data/lib/postnl_ecommerce/models/checkout_location.rb +126 -0
  50. data/lib/postnl_ecommerce/models/checkout_option_enum.rb +64 -0
  51. data/lib/postnl_ecommerce/models/checkout_pickup_address.rb +112 -0
  52. data/lib/postnl_ecommerce/models/checkout_pickup_option.rb +103 -0
  53. data/lib/postnl_ecommerce/models/checkout_request.rb +152 -0
  54. data/lib/postnl_ecommerce/models/checkout_response.rb +110 -0
  55. data/lib/postnl_ecommerce/models/checkout_time_frame.rb +108 -0
  56. data/lib/postnl_ecommerce/models/checkout_warning.rb +95 -0
  57. data/lib/postnl_ecommerce/models/checkout_warning_option_enum.rb +68 -0
  58. data/lib/postnl_ecommerce/models/code_enum.rb +44 -0
  59. data/lib/postnl_ecommerce/models/complete_status.rb +62 -0
  60. data/lib/postnl_ecommerce/models/complete_status_shipment.rb +270 -0
  61. data/lib/postnl_ecommerce/models/confirming_custom.rb +239 -0
  62. data/lib/postnl_ecommerce/models/confirming_custom_content.rb +113 -0
  63. data/lib/postnl_ecommerce/models/confirming_error.rb +71 -0
  64. data/lib/postnl_ecommerce/models/confirming_message.rb +70 -0
  65. data/lib/postnl_ecommerce/models/confirming_request.rb +86 -0
  66. data/lib/postnl_ecommerce/models/confirming_response.rb +71 -0
  67. data/lib/postnl_ecommerce/models/confirming_response_shipment.rb +103 -0
  68. data/lib/postnl_ecommerce/models/confirming_shipment.rb +472 -0
  69. data/lib/postnl_ecommerce/models/contact.rb +101 -0
  70. data/lib/postnl_ecommerce/models/countrycode_enum.rb +36 -0
  71. data/lib/postnl_ecommerce/models/currency_enum.rb +44 -0
  72. data/lib/postnl_ecommerce/models/currency_labelling_api_enum.rb +36 -0
  73. data/lib/postnl_ecommerce/models/current_status.rb +62 -0
  74. data/lib/postnl_ecommerce/models/current_status_shipment.rb +207 -0
  75. data/lib/postnl_ecommerce/models/customer.rb +123 -0
  76. data/lib/postnl_ecommerce/models/customer_address.rb +237 -0
  77. data/lib/postnl_ecommerce/models/customs.rb +238 -0
  78. data/lib/postnl_ecommerce/models/customs_labelling_api.rb +238 -0
  79. data/lib/postnl_ecommerce/models/delivery_options.rb +64 -0
  80. data/lib/postnl_ecommerce/models/deliverydate_delivery_response.rb +87 -0
  81. data/lib/postnl_ecommerce/models/deliverydate_option_enum.rb +56 -0
  82. data/lib/postnl_ecommerce/models/deliverydate_options.rb +65 -0
  83. data/lib/postnl_ecommerce/models/deliverydate_shipping_response.rb +62 -0
  84. data/lib/postnl_ecommerce/models/detail.rb +62 -0
  85. data/lib/postnl_ecommerce/models/dimension.rb +106 -0
  86. data/lib/postnl_ecommerce/models/error.rb +73 -0
  87. data/lib/postnl_ecommerce/models/event.rb +127 -0
  88. data/lib/postnl_ecommerce/models/expectation.rb +71 -0
  89. data/lib/postnl_ecommerce/models/extra_field.rb +71 -0
  90. data/lib/postnl_ecommerce/models/fault.rb +71 -0
  91. data/lib/postnl_ecommerce/models/fault_shipping_status_api.rb +71 -0
  92. data/lib/postnl_ecommerce/models/friday.rb +62 -0
  93. data/lib/postnl_ecommerce/models/get_locations_result_multiple.rb +71 -0
  94. data/lib/postnl_ecommerce/models/get_locations_result_single.rb +62 -0
  95. data/lib/postnl_ecommerce/models/group.rb +97 -0
  96. data/lib/postnl_ecommerce/models/hazardous_material.rb +178 -0
  97. data/lib/postnl_ecommerce/models/labelling_customer.rb +123 -0
  98. data/lib/postnl_ecommerce/models/labelling_customer_labelling_api.rb +123 -0
  99. data/lib/postnl_ecommerce/models/labelling_customer_message.rb +83 -0
  100. data/lib/postnl_ecommerce/models/labelling_customer_shipment.rb +484 -0
  101. data/lib/postnl_ecommerce/models/labelling_customer_shipment_labelling_api.rb +484 -0
  102. data/lib/postnl_ecommerce/models/labelling_customs_content.rb +111 -0
  103. data/lib/postnl_ecommerce/models/labelling_error.rb +81 -0
  104. data/lib/postnl_ecommerce/models/labelling_label.rb +84 -0
  105. data/lib/postnl_ecommerce/models/labelling_merged_label.rb +80 -0
  106. data/lib/postnl_ecommerce/models/labelling_request.rb +112 -0
  107. data/lib/postnl_ecommerce/models/labelling_response.rb +95 -0
  108. data/lib/postnl_ecommerce/models/labelling_response_shipment.rb +123 -0
  109. data/lib/postnl_ecommerce/models/language_enum.rb +48 -0
  110. data/lib/postnl_ecommerce/models/location.rb +174 -0
  111. data/lib/postnl_ecommerce/models/location_response_single.rb +63 -0
  112. data/lib/postnl_ecommerce/models/locations_address.rb +122 -0
  113. data/lib/postnl_ecommerce/models/locations_delivery_option_enum.rb +40 -0
  114. data/lib/postnl_ecommerce/models/locations_opening_hours.rb +121 -0
  115. data/lib/postnl_ecommerce/models/locations_response_multiple.rb +63 -0
  116. data/lib/postnl_ecommerce/models/monday.rb +62 -0
  117. data/lib/postnl_ecommerce/models/no_timeframes_options.rb +62 -0
  118. data/lib/postnl_ecommerce/models/old_status.rb +106 -0
  119. data/lib/postnl_ecommerce/models/opening_hours.rb +121 -0
  120. data/lib/postnl_ecommerce/models/opening_hours_per_day.rb +71 -0
  121. data/lib/postnl_ecommerce/models/options.rb +64 -0
  122. data/lib/postnl_ecommerce/models/origin_country_code_enum.rb +36 -0
  123. data/lib/postnl_ecommerce/models/postalcode_check_address.rb +116 -0
  124. data/lib/postnl_ecommerce/models/postalcode_check_error.rb +81 -0
  125. data/lib/postnl_ecommerce/models/product_option.rb +74 -0
  126. data/lib/postnl_ecommerce/models/reason_no_timeframe.rb +104 -0
  127. data/lib/postnl_ecommerce/models/reason_no_timeframes.rb +71 -0
  128. data/lib/postnl_ecommerce/models/saturday.rb +62 -0
  129. data/lib/postnl_ecommerce/models/shipment_type_enum.rb +50 -0
  130. data/lib/postnl_ecommerce/models/shippingstatus_address.rb +204 -0
  131. data/lib/postnl_ecommerce/models/shippingstatus_amount.rb +75 -0
  132. data/lib/postnl_ecommerce/models/shippingstatus_customer.rb +83 -0
  133. data/lib/postnl_ecommerce/models/shippingstatus_dimension.rb +101 -0
  134. data/lib/postnl_ecommerce/models/shippingstatus_product_option.rb +74 -0
  135. data/lib/postnl_ecommerce/models/shippingstatus_product_options.rb +63 -0
  136. data/lib/postnl_ecommerce/models/shippingstatus_response.rb +94 -0
  137. data/lib/postnl_ecommerce/models/shippingstatus_response_signature.rb +71 -0
  138. data/lib/postnl_ecommerce/models/shippingstatus_response_updated_shipment.rb +105 -0
  139. data/lib/postnl_ecommerce/models/shippingstatus_warning.rb +71 -0
  140. data/lib/postnl_ecommerce/models/signature.rb +84 -0
  141. data/lib/postnl_ecommerce/models/status.rb +108 -0
  142. data/lib/postnl_ecommerce/models/sunday.rb +62 -0
  143. data/lib/postnl_ecommerce/models/sustainability.rb +73 -0
  144. data/lib/postnl_ecommerce/models/thursday.rb +62 -0
  145. data/lib/postnl_ecommerce/models/timeframe.rb +71 -0
  146. data/lib/postnl_ecommerce/models/timeframe_options_enum.rb +60 -0
  147. data/lib/postnl_ecommerce/models/timeframe_response.rb +74 -0
  148. data/lib/postnl_ecommerce/models/timeframe_timeframe.rb +96 -0
  149. data/lib/postnl_ecommerce/models/timeframes.rb +71 -0
  150. data/lib/postnl_ecommerce/models/timeframes_response_object.rb +71 -0
  151. data/lib/postnl_ecommerce/models/tuesday.rb +62 -0
  152. data/lib/postnl_ecommerce/models/type_enum.rb +64 -0
  153. data/lib/postnl_ecommerce/models/updated_shipment_status.rb +108 -0
  154. data/lib/postnl_ecommerce/models/warning.rb +71 -0
  155. data/lib/postnl_ecommerce/models/warnings.rb +62 -0
  156. data/lib/postnl_ecommerce/models/wednesday.rb +62 -0
  157. data/lib/postnl_ecommerce/utilities/date_time_helper.rb +11 -0
  158. data/lib/postnl_ecommerce/utilities/file_wrapper.rb +28 -0
  159. data/lib/postnl_ecommerce.rb +188 -0
  160. data/test/controllers/controller_test_base.rb +23 -0
  161. data/test/controllers/test_barcode_controller.rb +52 -0
  162. data/test/controllers/test_checkout_controller.rb +63 -0
  163. data/test/controllers/test_confirming_controller.rb +54 -0
  164. data/test/controllers/test_deliverydate_controller.rb +60 -0
  165. data/test/controllers/test_labelling_controller.rb +57 -0
  166. data/test/controllers/test_locations_controller.rb +185 -0
  167. data/test/controllers/test_postalcode_check_controller.rb +55 -0
  168. data/test/controllers/test_shipment_controller.rb +57 -0
  169. data/test/controllers/test_shipping_status_controller.rb +209 -0
  170. data/test/controllers/test_timeframes_controller.rb +67 -0
  171. data/test/http_response_catcher.rb +19 -0
  172. metadata +283 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0ae661d6648705d8f45dc8db003f31c44f54a9087b6538e0feb783cd14c3c3d0
4
+ data.tar.gz: 5d257cff2d3f6c6148e7e13e08c90de8367c380b48cb95f5825a4ae67ad7dca4
5
+ SHA512:
6
+ metadata.gz: 0ecb52cc87a3c4ac72758a31ba42e03bbf3b54b34fb290686671ccc0c44775474e7ead0b55e07741dadd3d4cff44538b3b66d5e5f0f40683f7bbcd812c7e0bbc
7
+ data.tar.gz: 5ba05a22d58caa390430f1ec2dbaca9d8ae1acd394fd52d31d1e888f258fe5ad4025c416a5cafdb4668e1e42b3a3369f29b1f11f78bf34565d9bf978578e022f
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 - 2026 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,164 @@
1
+
2
+ # Getting Started with Postnl-Ecommerce
3
+
4
+ ## Introduction
5
+
6
+ <div><p><b>PostNL Ecommerce APIs</b></p><p>Explore our technical documentation, test your integration and go live with PostNL service.</p><p><b>Start using PostNL APIs for e-commerce processes</b></p><p>To get to know the PostNL APIs better, read all about it in our <a href='https://developer.postnl.nl/api-overview/'>API overview</a>. Learn everything you need to about our API's before embarking on integration with PostNL.</p><p>To connect to PostNL, you can request an API key via <a href='https://mijn.postnl.nl/c/BP2_Mod_Login.app?inresponseto=&RelayState=&startURL=%2F'>Mijn PostNL</a> portal. Choose your APIs and build your integration. Explore our guides, examples, and resources to guide you through each phase of integration and start testing. Ensure that you can make successful test calls towards all endpoints used in the solution.</p><p>Contact our integrations team to have your test calls reviewed and gain access to our API production environment. Once everything is configured and validated, you'll be ready to go live and start using the PostNL service.</p><p>For help contact us via our support form: <a href='https://developer.postnl.nl/support/form/'>Need help? Submit a case | PostNL</a>.</p></div>
7
+
8
+
9
+ ## Install the Package
10
+
11
+ Install the gem from the command line:
12
+
13
+ ```bash
14
+ gem install apimatic-pnl-sdk -v 1.0.0
15
+ ```
16
+
17
+ Or add the gem to your Gemfile and run `bundle`:
18
+
19
+ ```ruby
20
+ gem 'apimatic-pnl-sdk', '1.0.0'
21
+ ```
22
+
23
+ For additional gem details, see the [RubyGems page for the apimatic-pnl-sdk gem](https://rubygems.org/gems/apimatic-pnl-sdk/versions/1.0.0).
24
+
25
+ ## IRB Console Usage
26
+
27
+ You can explore the SDK interactively using IRB in two ways
28
+
29
+ ### 1. Use IRB with Installed Gem
30
+
31
+ Open your system terminal (Command Prompt, Git Bash or macOS Terminal) and type the following command to start the irb console.
32
+
33
+ ```bash
34
+ irb
35
+ ```
36
+
37
+ Now you can load the SDK in the IRB
38
+
39
+ ```ruby
40
+ require 'postnl_ecommerce'
41
+ include PostnlEcommerce
42
+ ```
43
+
44
+ ### 2. Use IRB within SDK
45
+
46
+ Open your system terminal (Command Prompt, Git Bash or macOS Terminal) and navigate to the root folder of SDK.
47
+
48
+ ```
49
+ cd path/to/postnl_ecommerce
50
+ ```
51
+
52
+ Now you can start the preconfigured irb console by running the following command
53
+
54
+ ```bash
55
+ ruby bin/console
56
+ ```
57
+
58
+ **_Note:_** This automatically loads the SDK from lib/
59
+
60
+ ## Test the SDK
61
+
62
+ To run the tests, navigate to the root directory of the SDK in your terminal and execute the following command:
63
+
64
+ ```
65
+ rake
66
+ ```
67
+
68
+ ## Initialize the API Client
69
+
70
+ **_Note:_** Documentation for the client can be found [here.](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/client.md)
71
+
72
+ The following parameters are configurable for the API Client:
73
+
74
+ | Parameter | Type | Description |
75
+ | --- | --- | --- |
76
+ | environment | [`Environment`](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/README.md#environments) | The API environment. <br> **Default: `Environment.PRODUCTION_SERVER`** |
77
+ | connection | `Faraday::Connection` | The Faraday connection object passed by the SDK user for making requests |
78
+ | adapter | `Faraday::Adapter` | The Faraday adapter object passed by the SDK user for performing http requests |
79
+ | timeout | `Float` | The value to use for connection timeout. <br> **Default: 60** |
80
+ | max_retries | `Integer` | The number of times to retry an endpoint call if it fails. <br> **Default: 3** |
81
+ | retry_interval | `Float` | Pause in seconds between retries. <br> **Default: 1** |
82
+ | backoff_factor | `Float` | The amount to multiply each successive retry's interval amount by in order to provide backoff. <br> **Default: 2** |
83
+ | retry_statuses | `Array` | A list of HTTP statuses to retry. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
84
+ | retry_methods | `Array` | A list of HTTP methods to retry. <br> **Default: %i[get put]** |
85
+ | http_callback | `HttpCallBack` | The Http CallBack allows defining callables for pre and post API calls. |
86
+ | proxy_settings | [`ProxySettings`](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/proxy-settings.md) | Optional proxy configuration to route HTTP requests through a proxy server. |
87
+ | custom_header_authentication_credentials | [`CustomHeaderAuthenticationCredentials`](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/auth/custom-header-signature.md) | The credential object for Custom Header Signature |
88
+
89
+ The API client can be initialized as follows:
90
+
91
+ ### Code-Based Client Initialization
92
+
93
+ ```ruby
94
+ require 'postnl_ecommerce'
95
+ include PostnlEcommerce
96
+
97
+ client = Client.new(
98
+ custom_header_authentication_credentials: CustomHeaderAuthenticationCredentials.new(
99
+ apikey: 'apikey'
100
+ ),
101
+ environment: Environment::PRODUCTION_SERVER
102
+ )
103
+ ```
104
+
105
+ ### Environment-Based Client Initialization
106
+
107
+ ```ruby
108
+ require 'postnl_ecommerce'
109
+ include PostnlEcommerce
110
+
111
+ # Create client from environment
112
+ client = Client.from_env
113
+ ```
114
+
115
+ See the [`Environment-Based Client Initialization`](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/environment-based-client-initialization.md) section for details.
116
+
117
+ ## Environments
118
+
119
+ The SDK can be configured to use a different environment for making API calls. Available environments are:
120
+
121
+ ### Fields
122
+
123
+ | Name | Description |
124
+ | --- | --- |
125
+ | PRODUCTION_SERVER | **Default** Production server |
126
+ | NON_PRODUCTION_SERVER | Sandbox environment for testing |
127
+
128
+ ## Authorization
129
+
130
+ This API uses the following authentication schemes.
131
+
132
+ * [`APIKeyHeader (Custom Header Signature)`](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/auth/custom-header-signature.md)
133
+
134
+ ## List of APIs
135
+
136
+ * [Postalcodecheck](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/postalcodecheck.md)
137
+ * [Barcode](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/barcode.md)
138
+ * [Checkout](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/checkout.md)
139
+ * [Confirming](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/confirming.md)
140
+ * [Deliverydate](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/deliverydate.md)
141
+ * [Labelling](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/labelling.md)
142
+ * [Locations](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/locations.md)
143
+ * [Shipment](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/shipment.md)
144
+ * [Shipping Status](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/shipping-status.md)
145
+ * [Timeframes](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/controllers/timeframes.md)
146
+
147
+ ## SDK Infrastructure
148
+
149
+ ### Configuration
150
+
151
+ * [ProxySettings](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/proxy-settings.md)
152
+ * [Environment-Based Client Initialization](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/environment-based-client-initialization.md)
153
+
154
+ ### HTTP
155
+
156
+ * [HttpResponse](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/http-response.md)
157
+ * [HttpRequest](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/http-request.md)
158
+
159
+ ### Utilities
160
+
161
+ * [ApiResponse](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/api-response.md)
162
+ * [ApiHelper](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/api-helper.md)
163
+ * [DateTimeHelper](https://www.github.com/sdks-io/apimatic-pnl-ruby-sdk/tree/1.0.0/doc/date-time-helper.md)
164
+
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Load the lib folder into Ruby's load path
4
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
+
6
+ # Require the gem
7
+ require 'postnl_ecommerce'
8
+
9
+ puts 'PostnlEcommerce SDK loaded!'
10
+ puts 'You can now create a client with: client = PostnlEcommerce::Client.new'
11
+ puts 'Or use from_env: client = PostnlEcommerce::Client.from_env'
12
+
13
+ # Start an interactive IRB session
14
+ require 'irb'
15
+ IRB.start
@@ -0,0 +1,10 @@
1
+ # postnl_ecommerce
2
+ #
3
+ # This file was automatically generated for PostNL by
4
+ # APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module PostnlEcommerce
7
+ # API utility class
8
+ class APIHelper < CoreLibrary::ApiHelper
9
+ end
10
+ end
@@ -0,0 +1,126 @@
1
+ # postnl_ecommerce
2
+ #
3
+ # This file was automatically generated for PostNL by
4
+ # APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module PostnlEcommerce
7
+ # postnl_ecommerce client class.
8
+ class Client
9
+ include CoreLibrary
10
+ attr_reader :config, :auth_managers
11
+
12
+ def user_agent_detail
13
+ config.user_agent_detail
14
+ end
15
+
16
+ # Access to barcode controller.
17
+ # @return [BarcodeController] Returns the controller instance.
18
+ def barcode
19
+ @barcode ||= BarcodeController.new @global_configuration
20
+ end
21
+
22
+ # Access to checkout controller.
23
+ # @return [CheckoutController] Returns the controller instance.
24
+ def checkout
25
+ @checkout ||= CheckoutController.new @global_configuration
26
+ end
27
+
28
+ # Access to confirming controller.
29
+ # @return [ConfirmingController] Returns the controller instance.
30
+ def confirming
31
+ @confirming ||= ConfirmingController.new @global_configuration
32
+ end
33
+
34
+ # Access to deliverydate controller.
35
+ # @return [DeliverydateController] Returns the controller instance.
36
+ def deliverydate
37
+ @deliverydate ||= DeliverydateController.new @global_configuration
38
+ end
39
+
40
+ # Access to labelling controller.
41
+ # @return [LabellingController] Returns the controller instance.
42
+ def labelling
43
+ @labelling ||= LabellingController.new @global_configuration
44
+ end
45
+
46
+ # Access to locations controller.
47
+ # @return [LocationsController] Returns the controller instance.
48
+ def locations
49
+ @locations ||= LocationsController.new @global_configuration
50
+ end
51
+
52
+ # Access to postalcode_check controller.
53
+ # @return [PostalcodeCheckController] Returns the controller instance.
54
+ def postalcode_check
55
+ @postalcode_check ||= PostalcodeCheckController.new @global_configuration
56
+ end
57
+
58
+ # Access to shipment controller.
59
+ # @return [ShipmentController] Returns the controller instance.
60
+ def shipment
61
+ @shipment ||= ShipmentController.new @global_configuration
62
+ end
63
+
64
+ # Access to shipping_status controller.
65
+ # @return [ShippingStatusController] Returns the controller instance.
66
+ def shipping_status
67
+ @shipping_status ||= ShippingStatusController.new @global_configuration
68
+ end
69
+
70
+ # Access to timeframes controller.
71
+ # @return [TimeframesController] Returns the controller instance.
72
+ def timeframes
73
+ @timeframes ||= TimeframesController.new @global_configuration
74
+ end
75
+
76
+ def initialize(
77
+ connection: nil, adapter: :net_http_persistent, timeout: 60,
78
+ max_retries: 3, retry_interval: 1, backoff_factor: 2,
79
+ retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
80
+ retry_methods: %i[get put], http_callback: nil, proxy_settings: nil,
81
+ environment: Environment::PRODUCTION_SERVER, apikey: nil,
82
+ custom_header_authentication_credentials: nil, config: nil
83
+ )
84
+ @config = if config.nil?
85
+ Configuration.new(
86
+ connection: connection, adapter: adapter, timeout: timeout,
87
+ max_retries: max_retries, retry_interval: retry_interval,
88
+ backoff_factor: backoff_factor,
89
+ retry_statuses: retry_statuses,
90
+ retry_methods: retry_methods, http_callback: http_callback,
91
+ proxy_settings: proxy_settings, environment: environment,
92
+ apikey: apikey,
93
+ custom_header_authentication_credentials: custom_header_authentication_credentials
94
+ )
95
+ else
96
+ config
97
+ end
98
+
99
+ @global_configuration = GlobalConfiguration.new(client_configuration: @config)
100
+ .base_uri_executor(@config.method(:get_base_uri))
101
+ .global_errors(BaseController::GLOBAL_ERRORS)
102
+ .user_agent(BaseController.user_agent)
103
+
104
+ initialize_auth_managers(@global_configuration)
105
+ @global_configuration = @global_configuration.auth_managers(@auth_managers)
106
+ end
107
+
108
+ # Initializes the auth managers hash used for authenticating API calls.
109
+ # @param [GlobalConfiguration] global_config The global configuration of the SDK)
110
+ def initialize_auth_managers(global_config)
111
+ @auth_managers = {}
112
+ http_client_config = global_config.client_configuration
113
+ %w[APIKeyHeader].each { |auth| @auth_managers[auth] = nil }
114
+ @auth_managers['APIKeyHeader'] = CustomHeaderAuthentication.new(
115
+ http_client_config.custom_header_authentication_credentials
116
+ )
117
+ end
118
+
119
+ # Creates a client directly from environment variables.
120
+ def self.from_env(**overrides)
121
+ default_config = Configuration.build_default_config_from_env
122
+ new_config = default_config.clone_with(**overrides)
123
+ new(config: new_config)
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,195 @@
1
+ # postnl_ecommerce
2
+ #
3
+ # This file was automatically generated for PostNL by
4
+ # APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module PostnlEcommerce
7
+ # An enum for SDK environments.
8
+ class Environment
9
+ # PRODUCTION_SERVER: Production server
10
+ # NON_PRODUCTION_SERVER: Sandbox environment for testing
11
+ ENVIRONMENT = [
12
+ PRODUCTION_SERVER = 'Production server'.freeze,
13
+ NON_PRODUCTION_SERVER = 'Non-Production server'.freeze
14
+ ].freeze
15
+
16
+ # Converts a string or symbol into a valid Environment constant.
17
+ def self.from_value(value, default_value = PRODUCTION_SERVER)
18
+ return default_value if value.nil?
19
+
20
+ str = value.to_s.strip.downcase
21
+ case str
22
+ when 'production_server' then PRODUCTION_SERVER
23
+ when 'non_production_server' then NON_PRODUCTION_SERVER
24
+
25
+ else
26
+ warn "[Environment] Unknown environment '#{value}', falling back to #{default_value} "
27
+ default_value
28
+ end
29
+ end
30
+ end
31
+
32
+ # An enum for API servers.
33
+ class Server
34
+ SERVER = [
35
+ POSTNL = 'postnl'.freeze
36
+ ].freeze
37
+
38
+ # Converts a string or symbol into a valid Server constant.
39
+ def self.from_value(value, default_value = POSTNL)
40
+ return default_value if value.nil?
41
+
42
+ default_value
43
+ end
44
+ end
45
+
46
+ # All configuration including auth info and base URI for the API access
47
+ # are configured in this class.
48
+ class Configuration < CoreLibrary::HttpClientConfiguration
49
+ def apikey
50
+ @custom_header_authentication_credentials.apikey
51
+ end
52
+
53
+ # The attribute readers for properties.
54
+ attr_reader :environment, :custom_header_authentication_credentials
55
+
56
+ class << self
57
+ attr_reader :environments
58
+ end
59
+
60
+ def initialize(
61
+ connection: nil, adapter: :net_http_persistent, timeout: 60,
62
+ max_retries: 3, retry_interval: 1, backoff_factor: 2,
63
+ retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
64
+ retry_methods: %i[get put], http_callback: nil, proxy_settings: nil,
65
+ environment: Environment::PRODUCTION_SERVER, apikey: nil,
66
+ custom_header_authentication_credentials: nil
67
+ )
68
+ super connection: connection, adapter: adapter, timeout: timeout,
69
+ max_retries: max_retries, retry_interval: retry_interval,
70
+ backoff_factor: backoff_factor, retry_statuses: retry_statuses,
71
+ retry_methods: retry_methods, http_callback: http_callback,
72
+ proxy_settings: proxy_settings
73
+
74
+ # Current API environment
75
+ @environment = String(environment)
76
+
77
+ # TODO: Replace
78
+ @apikey = apikey
79
+
80
+ # Initializing Custom Header Signature credentials with the provided auth parameters
81
+ @custom_header_authentication_credentials = create_auth_credentials_object(
82
+ apikey, custom_header_authentication_credentials
83
+ )
84
+
85
+ # The Http Client to use for making requests.
86
+ set_http_client CoreLibrary::FaradayClient.new(self)
87
+ end
88
+
89
+ def clone_with(connection: nil, adapter: nil, timeout: nil,
90
+ max_retries: nil, retry_interval: nil, backoff_factor: nil,
91
+ retry_statuses: nil, retry_methods: nil, http_callback: nil,
92
+ proxy_settings: nil, environment: nil, apikey: nil,
93
+ custom_header_authentication_credentials: nil)
94
+ connection ||= self.connection
95
+ adapter ||= self.adapter
96
+ timeout ||= self.timeout
97
+ max_retries ||= self.max_retries
98
+ retry_interval ||= self.retry_interval
99
+ backoff_factor ||= self.backoff_factor
100
+ retry_statuses ||= self.retry_statuses
101
+ retry_methods ||= self.retry_methods
102
+ http_callback ||= self.http_callback
103
+ proxy_settings ||= self.proxy_settings
104
+ environment ||= self.environment
105
+ custom_header_authentication_credentials = create_auth_credentials_object(
106
+ apikey,
107
+ custom_header_authentication_credentials || self.custom_header_authentication_credentials
108
+ )
109
+
110
+ Configuration.new(
111
+ connection: connection, adapter: adapter, timeout: timeout,
112
+ max_retries: max_retries, retry_interval: retry_interval,
113
+ backoff_factor: backoff_factor, retry_statuses: retry_statuses,
114
+ retry_methods: retry_methods, http_callback: http_callback,
115
+ proxy_settings: proxy_settings, environment: environment,
116
+ custom_header_authentication_credentials: custom_header_authentication_credentials
117
+ )
118
+ end
119
+
120
+ def create_auth_credentials_object(apikey,
121
+ custom_header_authentication_credentials)
122
+ return custom_header_authentication_credentials if apikey.nil?
123
+
124
+ warn('The \'apikey\' params are deprecated. Use \'custom_header_authenti'\
125
+ 'cation_credentials\' param instead.')
126
+
127
+ unless custom_header_authentication_credentials.nil?
128
+ return custom_header_authentication_credentials.clone_with(
129
+ apikey: apikey
130
+ )
131
+ end
132
+
133
+ CustomHeaderAuthenticationCredentials.new(apikey: apikey)
134
+ end
135
+
136
+ # All the environments the SDK can run in.
137
+ ENVIRONMENTS = {
138
+ Environment::PRODUCTION_SERVER => {
139
+ Server::POSTNL => 'https://api.postnl.nl'
140
+ },
141
+ Environment::NON_PRODUCTION_SERVER => {
142
+ Server::POSTNL => 'https://api-sandbox.postnl.nl'
143
+ }
144
+ }.freeze
145
+
146
+ # Generates the appropriate base URI for the environment and the server.
147
+ # @param [Configuration::Server] server The server enum for which the base URI is
148
+ # required.
149
+ # @return [String] The base URI.
150
+ def get_base_uri(server = Server::POSTNL)
151
+ ENVIRONMENTS[environment][server].clone
152
+ end
153
+
154
+ # Builds a Configuration instance using environment variables.
155
+ def self.build_default_config_from_env
156
+ # === Core environment ===
157
+ environment = Environment.from_value(ENV.fetch('ENVIRONMENT', 'production_server'))
158
+ timeout = (ENV['TIMEOUT'] || 60).to_f
159
+ max_retries = (ENV['MAX_RETRIES'] || 3).to_i
160
+ retry_interval = (ENV['RETRY_INTERVAL'] || 1).to_f
161
+ backoff_factor = (ENV['BACKOFF_FACTOR'] || 2).to_f
162
+ retry_statuses = ENV.fetch('RETRY_STATUSES',
163
+ '[408, 413, 429, 500, 502, 503, 504, 521, 522, 524]').gsub(/[\[\]]/, '')
164
+ .split(',')
165
+ .map(&:strip)
166
+ .map do |item|
167
+ item.match?(/\A\d+\z/) ? item.to_i : item.downcase
168
+ end
169
+ retry_methods = ENV.fetch('RETRY_METHODS', '%i[get put]').gsub(/[\[\]]/, '')
170
+ .split(',')
171
+ .map(&:strip)
172
+ .map do |item|
173
+ item.match?(/\A\d+\z/) ? item.to_i : item.downcase
174
+ end
175
+
176
+ # === Authentication credentials ===
177
+ custom_header_authentication_credentials = CustomHeaderAuthenticationCredentials.from_env
178
+
179
+ # === Proxy settings ===
180
+ proxy_settings = ProxySettings.from_env
181
+
182
+ Configuration.new(
183
+ environment: environment,
184
+ timeout: timeout,
185
+ max_retries: max_retries,
186
+ retry_interval: retry_interval,
187
+ backoff_factor: backoff_factor,
188
+ retry_statuses: retry_statuses,
189
+ retry_methods: retry_methods,
190
+ custom_header_authentication_credentials: custom_header_authentication_credentials,
191
+ proxy_settings: proxy_settings
192
+ )
193
+ end
194
+ end
195
+ end
@@ -0,0 +1,71 @@
1
+ # postnl_ecommerce
2
+ #
3
+ # This file was automatically generated for PostNL by
4
+ # APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module PostnlEcommerce
7
+ # BarcodeController
8
+ class BarcodeController < BaseController
9
+ # Request example:
10
+ # ```
11
+ # curl -X GET
12
+ # "https://api-sandbox.postnl.nl/shipment/v1_1/barcode?CustomerCode=DEVC&amp
13
+ # ;CustomerNumber=11223344&amp;Type=3S&amp;Serie=000000000-999999999&amp" \
14
+ # -H "Accept: application/json" \
15
+ # -H "apikey: APIKEY-HERE"
16
+ # ```
17
+ # @param [String] customer_code Required parameter: The customer code for
18
+ # which you want a barcode to be generated
19
+ # @param [String] customer_number Required parameter: The customer code for
20
+ # which you want a barcode to be generated
21
+ # @param [TypeEnum] type Required parameter: The barcode type that you want
22
+ # to be generated
23
+ # @param [String] serie Optional parameter: Barcode serie in the format
24
+ # '###000000-###000000', for example 100000-20000. The range must consist of
25
+ # a minimal difference of 100.000. It is allowed to add extra leading zeros
26
+ # at the beginning of the serie. See
27
+ # [Guidelines](https://developer.postnl.nl/docs/#/http/api-endpoints/send-tr
28
+ # ack/barcode/guidelines) for more information.
29
+ # @param [String] range Optional parameter: Only used for International Mail
30
+ # and Packet products (PEPS) shipments (with type LA, RI, UE). Identifying
31
+ # the issuing postal administration's country (NL in this case).
32
+ # @return [ApiResponse] Complete http response with raw body and status code.
33
+ def generate_barcode(customer_code,
34
+ customer_number,
35
+ type,
36
+ serie: nil,
37
+ range: nil)
38
+ @api_call
39
+ .request(new_request_builder(HttpMethodEnum::GET,
40
+ '/shipment/v1_1/barcode',
41
+ Server::POSTNL)
42
+ .query_param(new_parameter(customer_code, key: 'CustomerCode'))
43
+ .query_param(new_parameter(customer_number, key: 'CustomerNumber'))
44
+ .query_param(new_parameter(type, key: 'Type'))
45
+ .query_param(new_parameter(serie, key: 'Serie'))
46
+ .query_param(new_parameter(range, key: 'Range'))
47
+ .header_param(new_parameter('application/json', key: 'accept'))
48
+ .auth(Single.new('APIKeyHeader')))
49
+ .response(new_response_handler
50
+ .deserializer(APIHelper.method(:custom_type_deserializer))
51
+ .deserialize_into(BarcodeResponse.method(:from_hash))
52
+ .is_api_response(true)
53
+ .local_error('400',
54
+ 'Invalid request',
55
+ BarcodeResponseInvalidException)
56
+ .local_error('401',
57
+ 'Invalid apikey',
58
+ UnauthorizedException)
59
+ .local_error('405',
60
+ 'Method not allowed',
61
+ MethodNotAllowedOnlyGetPostException)
62
+ .local_error('429',
63
+ 'Too many requests',
64
+ TooManyRequestsException)
65
+ .local_error('500',
66
+ 'Internal server error',
67
+ InternalServerErrorException))
68
+ .execute
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,60 @@
1
+ # postnl_ecommerce
2
+ #
3
+ # This file was automatically generated for PostNL by
4
+ # APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module PostnlEcommerce
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 instance of the request builder.
33
+ # @param [String] http_method The HTTP method to use in the request.
34
+ # @param [String] path The endpoint path to use in the request.
35
+ # @param [String] server The server to extract the base uri for the request.
36
+ # @return [RequestBuilder] The instance of RequestBuilder.
37
+ def new_request_builder(http_method, path, server)
38
+ RequestBuilder.new
39
+ .http_method(http_method)
40
+ .path(path)
41
+ .server(server)
42
+ end
43
+
44
+ # Creates a new instance of the response handler.
45
+ # @return [ResponseHandler] The instance of ResponseHandler.
46
+ def new_response_handler
47
+ ResponseHandler.new
48
+ end
49
+
50
+ # Creates a new instance of the parameter.
51
+ # @param [String|optional] key The key of the parameter.
52
+ # @param [Object] value The value of the parameter.
53
+ # @return [Parameter] The instance of Parameter.
54
+ def new_parameter(value, key: nil)
55
+ Parameter.new
56
+ .key(key)
57
+ .value(value)
58
+ end
59
+ end
60
+ end