czech_post_b2b_client 1.2.8 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3f8150daa70de566a1a90f4287c3bb29f1547e9269409e573b6e7521a446df5
4
- data.tar.gz: 23a3271bcf33470fc45e85d4e1db58ee9ea192a864fc0266c887acc9a2d6b56b
3
+ metadata.gz: 4966f6b2ba55ab0f3d48abcdadff8d56ca1fdd8208d830a37d803b05a0017329
4
+ data.tar.gz: 47585947e57849957b8770d28d1814cc1f4d0fd425c38e2213fe98dce4c0ff15
5
5
  SHA512:
6
- metadata.gz: bbd09471e42a1af7f0f4bb7e8c6c34309e083dd224ad392ae11a84ec15c1aebedc178782f944a51d5be678a455daa769171dc02e2bf4d8cf50d18d0f98c9c643
7
- data.tar.gz: 84bdfde9c41917ffa85c0f191123aca5a6d8b6373907c4969d3bf38c65b8782e6d4466e912a3a0db48c258cf089ca8ca74ea7d5b27f421b5f0ff7ae5c6615b85
6
+ metadata.gz: a2581677a5993c5f053d0cac45da5d6352406f7e368c5181621740d625eaa3f6440d3066493886e9758b443a05c83982855574bf82c7fb572c92e802e06acce8
7
+ data.tar.gz: 176dc98628cec8bd7e0aa5cfcfb32d130ffec49d2ec19d6661f78b01c7fd8b4b0c2f6467fef2de0c413a1a4e0d14fed2ba8670437777739d260cc93d6a1bf203
data/.rubocop.yml CHANGED
@@ -13,7 +13,10 @@ AllCops:
13
13
  - "**/*.jb"
14
14
  Exclude:
15
15
  - "bin/*"
16
- Documentation:
16
+ - "documents/**/*"
17
+ - "test/fixtures/**/*"
18
+
19
+ Style/Documentation:
17
20
  Enabled: false
18
21
  Layout/LineLength:
19
22
  Max: 140
data/CHANGELOG.md CHANGED
@@ -2,60 +2,75 @@
2
2
 
3
3
  All changes to the gem are documented here.
4
4
 
5
+ ## [1.4.0] - 2022-10-20
6
+
7
+ - upgrade of all required gems to handle ruby 3
8
+ - CP cert can be passed by file path or content
9
+
10
+ ## [1.3.0] - 2022-04-07
11
+
12
+ - checked currently available Print Templates codes
13
+ - enhanced address sheet printing with ability to print ZPL sheets (templates 200, 201 and 202).
14
+ Result of `AddressSheetGenerator` now have `pdf_content` and `zpl_content`.
15
+ - found new(?) API from Czech Post , see `documents/B2B-ZSKService-1.4.0.yaml` and <https://www.ceskaposta.cz/napi/b2b>.
16
+
5
17
  ## [1.2.8] - 2022-03-22
6
- - added new response codes
18
+
19
+ - added new response codes
7
20
 
8
21
  ## [1.2.6] - 2020-10-27
9
22
 
10
- - fixed passing all errors from `parcelsServiceSync` response.
23
+ - fixed passing all errors from `parcelsServiceSync` response.
11
24
 
12
25
  ## [1.2.5] - 2020-10-06
13
26
 
14
- - `errorDescription` from `B2BError` response is now merged into error message.
27
+ - `errorDescription` from `B2BError` response is now merged into error message.
15
28
 
16
29
  ## [1.2.4] - 2020-10-06
17
30
 
18
- - Added `configuration.log_messages_at_least_as` option, to be able debug client behaviour when app log level is higher (eg. production)
31
+ - Added `configuration.log_messages_at_least_as` option, to be able debug client behaviour when app log level is higher (eg. production)
19
32
 
20
33
  ## [1.2.3] - 2020-08-21
21
34
 
22
- - Corrected order in XML `sequence` elements
23
- - Added `schemaLocation` to root element and placed publicly accessible XSDs into Github repo
35
+ - Corrected order in XML `sequence` elements
36
+ - Added `schemaLocation` to root element and placed publicly accessible XSDs into Github repo
24
37
 
25
38
  ## [1.2.2] - 2020-08-19
26
39
 
27
- - Printing templates now include @page_dimensions
28
- - Forced secure SSL ciphers for requests
29
- - `examples/try_api_call.rb` refactored to be more versatile (download XSDs [:do not work], pritn_selected_combinations)
40
+ - Printing templates now include @page_dimensions
41
+ - Forced secure SSL ciphers for requests
42
+ - `examples/try_api_call.rb` refactored to be more versatile (download XSDs [:do not work], pritn_selected_combinations)
30
43
 
31
44
  ## [1.2.0] - 2020-06-07
32
45
 
33
- - **Breaking** Introducing new Printing templates, improved some template names and scopes
34
- - Added options `custom_card_number` and `print_options` to `Configuration`
46
+ - **Breaking** Introducing new Printing templates, improved some template names and scopes
47
+ - Added options `custom_card_number` and `print_options` to `Configuration`
35
48
 
36
49
  ## [1.1.0] - 2020-05-28
37
50
 
38
- - Introducing new API documentation from Czech Post
39
- - Added service `ParcelSyncSender` service which uses newly discovered `parcelsServiceSync` API endpoint
40
- - Renamed `ParcelSender` to `ParcelAsyncSender` . And created deprecating clone `ParcelSender`, so no Breaking change! If You usit it calls `ParcelAsyncSender` and displays deprecation message.
51
+ - Introducing new API documentation from Czech Post
52
+ - Added service `ParcelSyncSender` service which uses newly discovered `parcelsServiceSync` API endpoint
53
+ - Renamed `ParcelSender` to `ParcelAsyncSender` . And created deprecating clone `ParcelSender`, so no Breaking change! If You usit it calls `ParcelAsyncSender` and displays deprecation message.
41
54
 
42
55
  ## [1.0.3] - 2020-05-20
43
56
 
44
- - Added Czech Post service DiscountForOnlinePosting.
45
- - **Breaking**: Renamed Post service "Size" classes `CzechPostB2bClient::PostServices::Size???` to `CzechPostB2bClient::PostServices::ParcelSize???` (eg. : `CzechPostB2bClient::PostServices::ParcelSizeXL`)
57
+ - Added Czech Post service DiscountForOnlinePosting.
58
+ - **Breaking**: Renamed Post service "Size" classes `CzechPostB2bClient::PostServices::Size???` to `CzechPostB2bClient::PostServices::ParcelSize???` (eg. : `CzechPostB2bClient::PostServices::ParcelSizeXL`)
46
59
  I know, that I have **breaking** in every new version, I hope You are not fast enough.
47
60
 
48
61
  ## [1.0.2] - 2020-05-08
49
62
 
50
- - Added Czech Post services as classes, not just list in docs.
51
- - **Breaking**: Renamed methods `CzechPostB2bClient::PrintingTemplate.all_template_classes` and `CzechPostB2bClient::ResponseCodes.all_code_classes` to `CzechPostB2bClient::PrintingTemplate.all_classes` , and `CzechPostB2bClient::ResponseCodes.all_classes`
63
+ - Added Czech Post services as classes, not just list in docs.
64
+ - **Breaking**: Renamed methods `CzechPostB2bClient::PrintingTemplate.all_template_classes` and `CzechPostB2bClient::ResponseCodes.all_code_classes` to `CzechPostB2bClient::PrintingTemplate.all_classes` , and `CzechPostB2bClient::ResponseCodes.all_classes`
52
65
 
53
66
  ## [1.0.0] - 2020-03-19
54
67
 
55
68
  Production ready release
56
69
 
57
70
  ### Fixed
71
+
58
72
  ### Changed
73
+
59
74
  ### Added
60
- - All the stuff
61
75
 
76
+ - All the stuff
data/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
 
2
2
  # FRESH NEWS
3
+ 7.4.2022
4
+ Finally there is some online documentation about nAPI of Czech post (https://www.ceskaposta.cz/napi/b2b)
5
+ Not yet checked if this is the same api we use or new one. Seems that authorization is different.
6
+
7
+
8
+ 26.8.2020
3
9
  After full usage in production (vyvolej.to, squared.one), we found that Czech POst have trouble with `parcelServiceSync` (maybe `sendParcels` too). When You try to register package with `:customs_documents`, you get `INVALID_BATCH` response with no error, but with `parcelCode`:
4
10
  ```
5
11
  <?xml version="1.0" encoding="UTF-8"?>
@@ -91,7 +97,11 @@ CzechPostB2bClient.configure do |config|
91
97
  config.contract_id = 'contract_id'
92
98
  config.customer_id = 'customer_id'
93
99
  config.certificate_path = 'full_path/to/your/postsignum_certificate.pem'
100
+ # or you can use cert directly from env
101
+ config.certificate = ENC['CP_CRT_CONTENT']
102
+
94
103
  config.private_key_path = 'full_path/to/your/postsignum_private.key'
104
+ # same here, filepath or content directly
95
105
  config.private_key_password = 'your_password or nil'
96
106
 
97
107
  # these two just save Your time, can be overwritten for each call
@@ -9,8 +9,10 @@ module CzechPostB2bClient
9
9
  :sending_post_office_code,
10
10
  :sending_post_office_location_number,
11
11
  :certificate_path,
12
+ :certificate,
12
13
  :private_key_password,
13
14
  :private_key_path,
15
+ :private_key,
14
16
  :namespaces,
15
17
  :language,
16
18
  :logger,
@@ -32,7 +34,7 @@ module CzechPostB2bClient
32
34
  }
33
35
 
34
36
  @language = :cs
35
- @logger = defined?(Rails) ? ::Rails.logger : ::Logger.new($stdout)
37
+ @logger = defined?(Rails::Logger) ? ::Rails.logger : ::Logger.new($stdout)
36
38
  @b2b_api_base_uri = 'https://b2b.postaonline.cz/services/POLService/v1'
37
39
  @sending_post_office_location_number = 1
38
40
 
@@ -9,6 +9,10 @@ module CzechPostB2bClient
9
9
  class Base
10
10
  class << self
11
11
  attr_reader :id, :description, :page_dimensions
12
+
13
+ def content_type
14
+ :pdf
15
+ end
12
16
  end
13
17
  end
14
18
 
@@ -132,12 +136,6 @@ module CzechPostB2bClient
132
136
  @page_dimensions = 'unverified'
133
137
  end
134
138
 
135
- class CODVoucherForCSOB < Base
136
- @id = 13
137
- @description = 'Dobírková složenka ČSOB'
138
- @page_dimensions = 'unverified'
139
- end
140
-
141
139
  class RRLabels3x8 < Base
142
140
  @id = 26
143
141
  @description = 'štítky pro RR : 3x8'
@@ -175,29 +173,23 @@ module CzechPostB2bClient
175
173
  @page_dimensions = 'A5 landscape (210 × 148 mm)'
176
174
  end
177
175
 
178
- class CN22FourOnPage < Base
179
- @id = 74
180
- @description = 'Celní prohlášení CN22 : 4x (A4)'
181
- @page_dimensions = 'unverified A4'
182
- end
183
-
184
- class CN22WithCK < Base
185
- @id = 75
186
- @description = 'Celní prohlášení CN22 s ČK (A4)'
187
- @page_dimensions = 'unverified A4'
188
- end
189
-
190
- class CN22WithCKFourOnPage < Base
191
- @id = 76
192
- @description = 'Celní prohlášení CN22 s ČK : 4x (A4)'
193
- @page_dimensions = 'unverified A4'
194
- end
195
- end
196
-
197
- class CN22FourOnPage < Base
198
- @id = 74
199
- @description = 'Celní prohlášení CN22 : 4x'
200
- @page_dimensions = 'A4 portrait (210 × 297 mm)'
176
+ # class CN22FourOnPage < Base
177
+ # @id = 74
178
+ # @description = 'Celní prohlášení CN22 : 4x (A4)'
179
+ # @page_dimensions = 'unverified A4'
180
+ # end
181
+
182
+ # class CN22WithCK < Base
183
+ # @id = 75
184
+ # @description = 'Celní prohlášení CN22 s ČK (A4)'
185
+ # @page_dimensions = 'unverified A4'
186
+ # end
187
+
188
+ # class CN22WithCKFourOnPage < Base
189
+ # @id = 76
190
+ # @description = 'Celní prohlášení CN22 s ČK : 4x (A4)'
191
+ # @page_dimensions = 'unverified A4'
192
+ # end
201
193
  end
202
194
 
203
195
  module HarmonizedLabel
@@ -232,20 +224,28 @@ module CzechPostB2bClient
232
224
  @description = 'Harmonizovaný štítek bianco - na výšku'
233
225
  @page_dimensions = 'A6 landscape (148 × 105 mm)'
234
226
  end
227
+ end
235
228
 
236
- class ZebraBianco105x148 < Base
229
+ module ZebraLabel
230
+ class Base < CzechPostB2bClient::PrintingTemplates::Base
231
+ def self.content_type
232
+ :zpl
233
+ end
234
+ end
235
+
236
+ class Bianco105x148 < ZebraLabel::Base
237
237
  @id = 200
238
238
  @description = 'Harmonizovaný štítek bianco - (Zebra - 105x148); nejde o PDF'
239
239
  @page_dimensions = 'unverified 105 × 148 mm'
240
240
  end
241
241
 
242
- class ZebraBianco100x150 < Base
242
+ class Bianco100x150 < ZebraLabel::Base
243
243
  @id = 201
244
244
  @description = 'Harmonizovaný štítek bianco - (Zebra - 100x150); nejde o PDF'
245
245
  @page_dimensions = 'unverified 100 × 150 mm'
246
246
  end
247
247
 
248
- class ZebraBianco100x125 < Base
248
+ class Bianco100x125 < ZebraLabel::Base
249
249
  @id = 202
250
250
  @description = 'Harmonizovaný štítek bianco - (Zebra - 100x125); nejde o PDF'
251
251
  @page_dimensions = 'unverified 100 × 125 mm'
@@ -257,5 +257,12 @@ module CzechPostB2bClient
257
257
  base_class = CzechPostB2bClient::PrintingTemplates::Base
258
258
  ObjectSpace.each_object(base_class.singleton_class).reject { |c| c == base_class }
259
259
  end
260
+
261
+ def self.find(id)
262
+ klass = all_classes.detect { |k| k.id == id }
263
+ raise "PrintingTemplate with id: #{id} is unknown!" unless klass
264
+
265
+ klass
266
+ end
260
267
  end
261
268
  end
@@ -8,8 +8,8 @@ module CzechPostB2bClient
8
8
  def build_result
9
9
  super
10
10
  @result[:response][:state] = state_hash_from(printing_response_header_result['doPrintingStateResponse'])
11
- @result[:printings] = { options: options_hash,
12
- pdf_content: pdf_content }
11
+ opt_hash = options_hash
12
+ @result[:printings] = { options: opt_hash }.merge(content_hash(opt_hash[:template_id]))
13
13
  end
14
14
 
15
15
  def options_hash
@@ -24,11 +24,23 @@ module CzechPostB2bClient
24
24
  }
25
25
  end
26
26
 
27
- def pdf_content
28
- pdf_content_encoded = response_root_node.dig('doPrintingDataResult', 'file')
29
- return nil if pdf_content_encoded.nil?
27
+ def content_hash(template_id)
28
+ if zpl_template?(template_id)
29
+ { zpl_content: response_content.force_encoding('utf-8') }
30
+ else
31
+ { pdf_content: response_content }
32
+ end
33
+ end
34
+
35
+ def zpl_template?(template_id)
36
+ CzechPostB2bClient::PrintingTemplates.find(template_id).content_type == :zpl
37
+ end
38
+
39
+ def response_content
40
+ content_encoded = response_root_node.dig('doPrintingDataResult', 'file')
41
+ return nil if content_encoded.nil?
30
42
 
31
- ::Base64.decode64(pdf_content_encoded)
43
+ ::Base64.decode64(content_encoded)
32
44
  end
33
45
 
34
46
  def response_root_node_name
@@ -5,7 +5,7 @@ module CzechPostB2bClient
5
5
  class AddressSheetsGenerator < CzechPostB2bClient::Services::Communicator
6
6
  attr_reader :parcel_codes, :options
7
7
 
8
- AddressSheetsGeneratorResult = Struct.new(:pdf_content, :state_text, :state_code, keyword_init: true)
8
+ AddressSheetsGeneratorResult = Struct.new(:pdf_content, :zpl_content, :state_text, :state_code, keyword_init: true)
9
9
 
10
10
  def initialize(parcel_codes:, options: {})
11
11
  super()
@@ -41,6 +41,7 @@ module CzechPostB2bClient
41
41
 
42
42
  def build_result_from(response_hash)
43
43
  AddressSheetsGeneratorResult.new(pdf_content: response_hash.dig(:printings, :pdf_content),
44
+ zpl_content: response_hash.dig(:printings, :zpl_content),
44
45
  state_text: response_hash.dig(:response, :state, :text),
45
46
  state_code: response_hash.dig(:response, :state, :code))
46
47
  end
@@ -73,15 +73,23 @@ module CzechPostB2bClient
73
73
  { 'Content-Type': 'text/xml' }
74
74
  end
75
75
 
76
+ def certificate
77
+ configuration.certificate || File.read(configuration.certificate_path)
78
+ end
79
+
80
+ def private_key
81
+ configuration.private_key || File.read(configuration.private_key_path)
82
+ end
83
+
76
84
  def connection_options
77
85
  {
78
86
  use_ssl: true,
79
87
  verify_mode: OpenSSL::SSL::VERIFY_PEER,
80
88
  keep_alive_timeout: 30,
81
89
  ciphers: secure_and_available_ciphers,
82
- cert: OpenSSL::X509::Certificate.new(File.read(configuration.certificate_path)),
90
+ cert: OpenSSL::X509::Certificate.new(certificate),
83
91
  # cert_password: configuration.certificate_password,
84
- key: OpenSSL::PKey::RSA.new(File.read(configuration.private_key_path), configuration.private_key_password),
92
+ key: OpenSSL::PKey::RSA.new(private_key, configuration.private_key_password),
85
93
  cert_store: post_signum_ca_store
86
94
  }
87
95
  end
@@ -8,7 +8,8 @@ module CzechPostB2bClient
8
8
  def result_of_subservice(service_hash)
9
9
  service_name = service_hash.keys.first
10
10
  service_class = send("#{service_name}_class")
11
- service = service_class.call(service_hash.values.first)
11
+
12
+ service = service_class.call(**service_hash.values.first)
12
13
 
13
14
  if service.failed?
14
15
  errors.add_from_hash({ service_name => service.errors.full_messages })
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CzechPostB2bClient
4
- VERSION = '1.2.8'
4
+ VERSION = '1.4.0'
5
5
  end
@@ -87,7 +87,13 @@ module SteppedService
87
87
  attr_reader :result
88
88
 
89
89
  def self.call(*args, **keyword_args)
90
- new(*args, **keyword_args).call
90
+ if args.blank?
91
+ new(**keyword_args).call
92
+ elsif keyword_args.blank?
93
+ new(*args).call
94
+ else
95
+ new(*args, **keyword_args).call
96
+ end
91
97
  end
92
98
 
93
99
  # You can override it, to not use steps
metadata CHANGED
@@ -1,141 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: czech_post_b2b_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Mlčoch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-22 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ox
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.11'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.11'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '2.1'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '2.1'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '5.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '5.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest-reporters
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry-byebug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '3.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '3.0'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '13.0'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '13.0'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 1.26.1
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 1.26.1
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rubocop-minitest
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0.6'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '0.6'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: webmock
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '3.0'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '3.0'
138
+ version: '0'
139
139
  description:
140
140
  email:
141
141
  - foton@centrum.cz
@@ -218,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  - !ruby/object:Gem::Version
219
219
  version: '0'
220
220
  requirements: []
221
- rubygems_version: 3.2.28
221
+ rubygems_version: 3.3.7
222
222
  signing_key:
223
223
  specification_version: 4
224
224
  summary: Accessing B2B API of Czech Post for bulk processing of packages ("B2B - WS