evropochta 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95c05e20fa1d3a300d89e9364bc7ec5644756a47f617b780746d0fee0e5c6fc8
4
- data.tar.gz: b225700ca8d1ef4ad165bcfb618be9f62539d13adec52a61c19cdb85f285366a
3
+ metadata.gz: 43fb3aa9657f28f006bf89b5bae8fcb0485bf13fb7c2f19af29465a5d4ba8b9f
4
+ data.tar.gz: bfc6977882aad03b2d34b47c1b7e97725ab5672566fbd7af370c7b6f1bcada88
5
5
  SHA512:
6
- metadata.gz: 5756637c37eb45945dc74356ee99f6d09ec46f29fbd73d291e1208268c2fa0974c4270fb5c0d0edcf23b34cab3f4649c8f8f7e266c8fd7e21a2ed181d927cef9
7
- data.tar.gz: 60a29f4b2f30602c6fdecb8a4b82facadd1b558398f2bcba957597af824ae1e43d0c44e5ad5913deb0f5202e5c3f57b9bd3a9a49c959f4b63b7242295d9cb975
6
+ metadata.gz: bca92ab1f4dd47874d85b907ae3992a37edd50ff750a4baaf859dd2bb7bb608e27fe21a9966af4a49118cd8b2b56c23220658a7f264939e10cc3b7a7237e3032
7
+ data.tar.gz: 1bb52b3eada3946741ff0cb3b07367115b1d41f76bdce19581e3fd7234f6ab997dbcafa5373000cb7a8b11f1bfec19b1d9f2c139e14cbde0bce46a40d60f674e
data/README.md CHANGED
@@ -1,2 +1,67 @@
1
- # Evropochta
2
- Gem for working with the "Evropochta" delivery service via API
1
+ Evropochta Ruby Client
2
+ =================
3
+
4
+ A Ruby client for the Evropochta (https://evropochta.by/) API.
5
+
6
+ <img src="https://avatars.mds.yandex.net/get-altay/14020851/2a00000191f166d6c586803a961a45011a4d/orig" alt="Evropochta Logo" width="300" height="200">
7
+
8
+ ## Installation
9
+
10
+ Add to Gemfile.
11
+
12
+ ```
13
+ gem 'evropochta'
14
+ ```
15
+
16
+ Run `bundle install`.
17
+
18
+ ## Usage
19
+ 1. Add gem to your project
20
+ 2. Get your SERVICE_NUMBER and LOGIN_NAME/PASSWORD:
21
+ - SERVICE_NUMBER provides by Evropochta manager.
22
+ - LOGIN_NAME/PASSWORD - credentials for your bussines account.
23
+ 3. Create a .env file
24
+
25
+ ```bash
26
+ API_URL=
27
+ API_PORT=
28
+ SERVICE_NUMBER=
29
+ USER_LOGIN_NAME=
30
+ USER_PASSWORD=
31
+ USER_LOGIN_NAME_TYPE_ID=<1
32
+ ```
33
+
34
+
35
+
36
+
37
+
38
+
39
+ ## Quick start
40
+
41
+ ```
42
+ gem install evropochta
43
+ ```
44
+
45
+ ```ruby
46
+ require "evropochta"
47
+ ```
48
+
49
+ ```ruby
50
+ gem "evropochta"
51
+ ```
52
+
53
+ ## Support
54
+
55
+ If you want to report a bug, or have ideas, feedback or questions about the gem, [let me know via GitHub issues](https://github.com/mattbrictson/gem/issues/new) and I will do my best to provide a helpful answer. Happy hacking!
56
+
57
+ ## License
58
+
59
+ The gem is available as open source under the terms of the [MIT License](LICENSE.txt).
60
+
61
+ ## Code of conduct
62
+
63
+ Everyone interacting in this project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](CODE_OF_CONDUCT.md).
64
+
65
+ ## Contribution guide
66
+
67
+ Pull requests are welcome!
data/exe/evropochta CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "evropochta"
3
+ require "evropochta"
@@ -3,7 +3,14 @@ module Evropochta
3
3
  module Search4
4
4
  module_function
5
5
 
6
+ MAX_LIMIT = 50
7
+
6
8
  def call(address: "", limit_addresses: 10, address4_id: 0)
9
+ if limit_addresses.zero? || limit_addresses > MAX_LIMIT
10
+ LOG.error("Incorrect limit addresses (#{limit_addresses}). Should be in range 1 to 50")
11
+ return []
12
+ end
13
+
7
14
  Services::Shared.request(
8
15
  "Addresses.Search4",
9
16
  {
@@ -0,0 +1,12 @@
1
+ module Evropochta
2
+ module Postal
3
+ module Base
4
+ def validate_required_keys(opts)
5
+ missing_keys = self::REQUIRED_KEYS.select { |key| opts[key].nil? }
6
+ return unless missing_keys.any?
7
+
8
+ raise ArgumentError, "Missing required keys: #{missing_keys.map(&:to_s).join(', ')}"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -7,7 +7,7 @@ module Evropochta
7
7
  Services::Shared.request(
8
8
  "Postal.DeliveryTime",
9
9
  Number: track_number,
10
- Address1IdReciever: address1_id_reciever,
10
+ Address1IdReciever: address1_id_reciever
11
11
  )
12
12
  end
13
13
  end
@@ -9,7 +9,7 @@ module Evropochta
9
9
  {
10
10
  PostalItemExternalId: postal_item_external_ids,
11
11
  SerialNumber: serial_numbers,
12
- DateTransfer: date_transfer,
12
+ DateTransfer: date_transfer
13
13
  }
14
14
  )
15
15
  end
@@ -1,44 +1,60 @@
1
1
  module Evropochta
2
2
  module Postal
3
3
  module PutOrder
4
+ extend Base
5
+
4
6
  module_function
5
7
 
8
+ REQUIRED_KEYS = %i[
9
+ goods_id
10
+ post_delivery_type_id
11
+ postal_weight_id
12
+ warehouse_id_start
13
+ phone_number_reciever
14
+ name1_reciever
15
+ name2_reciever
16
+ ].freeze
17
+
6
18
  def call(opts: {})
19
+ validate_required_keys(opts)
20
+
21
+ data = {
22
+ GoodsId: opts[:goods_id],
23
+ PostDeliveryTypeId: opts[:post_delivery_type_id],
24
+ PostalWeightId: opts[:postal_weight_id],
25
+ IsFragile: opts[:is_fragile],
26
+ IsInventory: opts[:is_inventory],
27
+ IsCompletenessCheck: opts[:is_completeness_check],
28
+ CashOnDeliverySum: opts[:cash_on_delivery_sum],
29
+ CashOnDeliveryDeclareValueSum: opts[:cash_on_delivery_declare_value_sum],
30
+ WarehouseIdStart: opts[:warehouse_id_start],
31
+ WarehouseIdFinish: opts[:warehouse_id_finish],
32
+ Adress1IdReciever: opts[:adress1_id_reciever],
33
+ PhoneNumberReciever: opts[:phone_number_reciever],
34
+ EMailReciever: opts[:email_reciever],
35
+ Name1Reciever: opts[:name1_reciever],
36
+ Name2Reciever: opts[:name2_reciever],
37
+ Name3Reciever: opts[:name3_reciever],
38
+ CashOnDeliveryMoneyBackId: opts[:cash_on_delivery_money_back_id],
39
+ InfoSender: opts[:info_sender],
40
+ PostalItemExternalId: opts[:postal_item_external_id],
41
+ IsOversize: opts[:is_oversize],
42
+ PostalHeight: opts[:postal_height],
43
+ PostalWidth: opts[:postal_width],
44
+ PostalLength: opts[:postal_length],
45
+ IsAutoDeliveryFlag: opts[:is_auto_delivery_flag],
46
+ AutoDeliveryTimeFrom: opts[:auto_delivery_time_from],
47
+ AutoDeliveryTimeTo: opts[:auto_delivery_time_to],
48
+ IsRelabeling: opts[:is_relabeling],
49
+ IsRecieverShipping: opts[:is_reciever_shipping],
50
+ IsRecieverPackaging: opts[:is_reciever_packaging],
51
+ IsRecieverCashOnDelivery: opts[:is_reciever_cash_on_delivery],
52
+ AgreementTypeId: opts[:agreement_type_id]
53
+ }
54
+
7
55
  Services::Shared.request(
8
56
  "Postal.PutOrder",
9
- {
10
- GoodsId: opts[:goods_id],
11
- PostDeliveryTypeId: opts[:post_delivery_type_id],
12
- PostalWeightId: opts[:postal_weight_id],
13
- IsFragile: opts[:is_fragile],
14
- IsInventory: opts[:is_inventory],
15
- IsCompletenessCheck: opts[:is_completeness_check],
16
- CashOnDeliverySum: opts[:cash_on_delivery_sum],
17
- CashOnDeliveryDeclareValueSum: opts[:cash_on_delivery_declare_value_sum],
18
- WarehouseIdStart: opts[:warehouse_id_start],
19
- WarehouseIdFinish: opts[:warehouse_id_finish],
20
- Adress1IdReciever: opts[:adress1_id_reciever],
21
- PhoneNumberReciever: opts[:phone_number_reciever],
22
- EMailReciever: opts[:email_reciever],
23
- Name1Reciever: opts[:name1_reciever],
24
- Name2Reciever: opts[:name2_reciever],
25
- Name3Reciever: opts[:name3_reciever],
26
- CashOnDeliveryMoneyBackId: opts[:cash_on_delivery_money_back_id],
27
- InfoSender: opts[:info_sender],
28
- PostalItemExternalId: opts[:postal_item_external_id],
29
- IsOversize: opts[:is_oversize],
30
- PostalHeight: opts[:postal_height],
31
- PostalWidth: opts[:postal_width],
32
- PostalLength: opts[:postal_length],
33
- IsAutoDeliveryFlag: opts[:is_auto_delivery_flag],
34
- AutoDeliveryTimeFrom: opts[:auto_delivery_time_from],
35
- AutoDeliveryTimeTo: opts[:auto_delivery_time_to],
36
- IsRelabeling: opts[:is_relabeling],
37
- IsRecieverShipping: opts[:is_reciever_shipping],
38
- IsRecieverPackaging: opts[:is_reciever_packaging],
39
- IsRecieverCashOnDelivery: opts[:is_reciever_cash_on_delivery],
40
- AgreementTypeId: opts[:agreement_type_id]
41
- }
57
+ data.compact
42
58
  )
43
59
  end
44
60
  end
@@ -1,3 +1,3 @@
1
1
  module Evropochta
2
- VERSION = "0.2.0".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
data/lib/evropochta.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "dotenv/load"
2
+ require "logger"
2
3
  require_relative "evropochta/version"
3
4
  require_relative "evropochta/config"
4
5
  require_relative "evropochta/services/api_service"
@@ -8,6 +9,7 @@ require_relative "evropochta/services/shared"
8
9
  require_relative "evropochta/addresses/search4"
9
10
  require_relative "evropochta/addresses/get_address_id"
10
11
 
12
+ require_relative "evropochta/postal/base"
11
13
  require_relative "evropochta/postal/delivery_type_dir"
12
14
  require_relative "evropochta/postal/types_dir"
13
15
  require_relative "evropochta/postal/weight_type_dir"
@@ -24,4 +26,5 @@ require_relative "evropochta/postal/group_order"
24
26
  require_relative "evropochta/postal/delivery_time"
25
27
 
26
28
  module Evropochta
29
+ LOG = Logger.new($stdout, level: :warn)
27
30
  end
metadata CHANGED
@@ -1,16 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evropochta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Grahovskiy
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-02 00:00:00.000000000 Z
12
- dependencies: []
13
- description:
11
+ date: 2025-03-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description:
14
28
  email:
15
29
  - kuberlite@gmail.com
16
30
  executables:
@@ -25,6 +39,7 @@ files:
25
39
  - lib/evropochta/addresses/search4.rb
26
40
  - lib/evropochta/auth/jwt.rb
27
41
  - lib/evropochta/config.rb
42
+ - lib/evropochta/postal/base.rb
28
43
  - lib/evropochta/postal/calculation_tariff.rb
29
44
  - lib/evropochta/postal/change_order.rb
30
45
  - lib/evropochta/postal/delivery_time.rb
@@ -51,7 +66,7 @@ metadata:
51
66
  source_code_uri: https://github.com/KuberLite/evropochta
52
67
  homepage_uri: https://github.com/KuberLite/evropochta
53
68
  rubygems_mfa_required: 'true'
54
- post_install_message:
69
+ post_install_message:
55
70
  rdoc_options: []
56
71
  require_paths:
57
72
  - lib
@@ -66,8 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
81
  - !ruby/object:Gem::Version
67
82
  version: '0'
68
83
  requirements: []
69
- rubygems_version: 3.2.33
70
- signing_key:
84
+ rubygems_version: 3.5.3
85
+ signing_key:
71
86
  specification_version: 4
72
87
  summary: Evropochta API wrapper
73
88
  test_files: []