evropochta 0.2.1 → 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: caf3f8d1e579d691f47a8a489515c97ef94150e408652dc0f901d1df51bdb22c
4
- data.tar.gz: e725a4422aee1d748333f1aa1db97b9d4abeda242943940251506440e337b5f0
3
+ metadata.gz: 43fb3aa9657f28f006bf89b5bae8fcb0485bf13fb7c2f19af29465a5d4ba8b9f
4
+ data.tar.gz: bfc6977882aad03b2d34b47c1b7e97725ab5672566fbd7af370c7b6f1bcada88
5
5
  SHA512:
6
- metadata.gz: d3a0405a76a1a011d8f59e1fceb300bf65998034f07198f0cad744ef33f48d27107b09509fe7a30d03c9aa5f3f91378aad13c9cb857cad858b9ac0e421c51ba5
7
- data.tar.gz: f6c0a453f5afbb5d5ea427375e6cd26eb9f133eca50b23bd0060cb748142090f52edaad61fe6038fd632e85c8861aec7e54c1447df63e30466d54e86c42025f3
6
+ metadata.gz: bca92ab1f4dd47874d85b907ae3992a37edd50ff750a4baaf859dd2bb7bb608e27fe21a9966af4a49118cd8b2b56c23220658a7f264939e10cc3b7a7237e3032
7
+ data.tar.gz: 1bb52b3eada3946741ff0cb3b07367115b1d41f76bdce19581e3fd7234f6ab997dbcafa5373000cb7a8b11f1bfec19b1d9f2c139e14cbde0bce46a40d60f674e
data/README.md CHANGED
@@ -1,3 +1,41 @@
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
+
1
39
  ## Quick start
2
40
 
3
41
  ```
@@ -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
@@ -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.1".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
data/lib/evropochta.rb CHANGED
@@ -9,6 +9,7 @@ require_relative "evropochta/services/shared"
9
9
  require_relative "evropochta/addresses/search4"
10
10
  require_relative "evropochta/addresses/get_address_id"
11
11
 
12
+ require_relative "evropochta/postal/base"
12
13
  require_relative "evropochta/postal/delivery_type_dir"
13
14
  require_relative "evropochta/postal/types_dir"
14
15
  require_relative "evropochta/postal/weight_type_dir"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evropochta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
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
11
+ date: 2025-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description:
27
+ description:
28
28
  email:
29
29
  - kuberlite@gmail.com
30
30
  executables:
@@ -39,6 +39,7 @@ files:
39
39
  - lib/evropochta/addresses/search4.rb
40
40
  - lib/evropochta/auth/jwt.rb
41
41
  - lib/evropochta/config.rb
42
+ - lib/evropochta/postal/base.rb
42
43
  - lib/evropochta/postal/calculation_tariff.rb
43
44
  - lib/evropochta/postal/change_order.rb
44
45
  - lib/evropochta/postal/delivery_time.rb
@@ -65,7 +66,7 @@ metadata:
65
66
  source_code_uri: https://github.com/KuberLite/evropochta
66
67
  homepage_uri: https://github.com/KuberLite/evropochta
67
68
  rubygems_mfa_required: 'true'
68
- post_install_message:
69
+ post_install_message:
69
70
  rdoc_options: []
70
71
  require_paths:
71
72
  - lib
@@ -80,8 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
81
  - !ruby/object:Gem::Version
81
82
  version: '0'
82
83
  requirements: []
83
- rubygems_version: 3.2.33
84
- signing_key:
84
+ rubygems_version: 3.5.3
85
+ signing_key:
85
86
  specification_version: 4
86
87
  summary: Evropochta API wrapper
87
88
  test_files: []