yandex-delivery-api 0.0.1 → 0.0.6

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: 61e4bfce3f0c4a577569ed137681e86f8fbbfc9674e3cf32affb021c7e4b130f
4
- data.tar.gz: a65c591138740489ce1df8f9b106793258d5be1a400637b603ee62d6c2cf0549
3
+ metadata.gz: 45597ab0447b3d3fad27fc6d0f1aacc7c56f6475146e460d040653239a96ebd5
4
+ data.tar.gz: e71722bb3482e6a202e9ab2dac4ca00b478675f8c3e601660a9a074b4a150980
5
5
  SHA512:
6
- metadata.gz: ca1dc9ff2ff620ae8528b52fc0cbe61bf2e8da162620572b07810ea7140de3c7eb6771a58a66ab78c56f2021065a1a23c7203e0f90719f4a9c6b0fd9f239f0ef
7
- data.tar.gz: 10e59bc4080231d7dca5180c0e3d2c3a49619433a4a7d7c5a00551c2470c422577e066d819f8012576408742973da0e42b63cd0e13ed2fa168402fa146e4e602
6
+ metadata.gz: d2c8a485d69367d915e636254e09efe3c8ec87e46db4dc53caa6ee42af2b774ca2fec415cb86516cabbbe220ce5524d19a7a64f53dd4757cbd8bd848ab7c839f
7
+ data.tar.gz: 3e4e97235c7e2d60b22878869ed7115600f985bcdeb734a66c45aa5069dff15012c8c76c89124ed33f28cd466aa35dbe7c7ffc9e7adffc3963ad912c9e4d23e3
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Pavel Osetrov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,36 @@
1
+ ## Installation
2
+
3
+ Добавьте в Gemfile:
4
+
5
+ gem 'yandex-delivery-api', github: 'osetrov/yandex-delivery-api'
6
+
7
+ и запустите `bundle install`.
8
+
9
+ Затем:
10
+
11
+ rails g yandex_delivery:install
12
+
13
+ в файл `config/yandex_delivery.yml` вставьте ваши данные из настоек яндекс доставки:
14
+
15
+ https://delivery.yandex.ru/integration/index
16
+
17
+ Все возможные запросы:
18
+ https://tech.yandex.ru/delivery/doc/dg/about-docpage/
19
+
20
+ Например "Получить варианты доставки":
21
+ ```erb
22
+ params = {
23
+ :city_from => 'Санкт-Петербург',
24
+ :city_to => 'Москва',
25
+ :delivery_type => 'todoor',
26
+ :weight => 2,
27
+ :length => 18,
28
+ :width => 3,
29
+ :height => 3,
30
+ :order_cost => 1000
31
+ }
32
+
33
+ YandexDelivery::search_delivery_list params
34
+ ```
35
+
36
+ secret_key, client_id, sender_id указывать в параметрах не обязательно.
@@ -0,0 +1,2 @@
1
+ Description:
2
+ yandex_delivery:install
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ module YandexDelivery
4
+ class InstallGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('templates', __dir__)
6
+
7
+ def generate_install
8
+ copy_file 'yandex_delivery.yml', 'config/yandex_delivery.yml'
9
+ copy_file 'yandex_delivery.rb', 'config/initializers/yandex_delivery.rb'
10
+ end
11
+ end
12
+ end
13
+
@@ -0,0 +1,17 @@
1
+ require 'yandex_delivery'
2
+
3
+ YandexDelivery.setup do |config|
4
+ if File.exist?('config/yandex_delivery.yml')
5
+ template = ERB.new(File.new('config/yandex_delivery.yml').read)
6
+ processed = YAML.safe_load(template.result(binding))
7
+
8
+ processed['YANDEX_DELIVERY_API_KEY'].each do |k, v|
9
+ config::create_method k.underscore.to_sym
10
+ config::register "#{k.underscore}_key".to_sym, v
11
+ end
12
+
13
+ processed['YANDEX_DELIVERY'].each do |k, v|
14
+ config::register k.underscore.to_sym, v
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,55 @@
1
+ YANDEX_DELIVERY_API_KEY: {
2
+ "getPaymentMethods": "",
3
+ "getSenderOrders": "",
4
+ "getSenderOrderLabel": "",
5
+ "getSenderParcelDocs": "",
6
+ "autocomplete": "",
7
+ "getIndex": "",
8
+ "createOrder": "",
9
+ "updateOrder": "",
10
+ "deleteOrder": "",
11
+ "getSenderOrderStatus": "",
12
+ "getSenderOrderStatuses": "",
13
+ "getSenderInfo": "",
14
+ "getWarehouseInfo": "",
15
+ "getRequisiteInfo": "",
16
+ "getIntervals": "",
17
+ "createWithdraw": "",
18
+ "confirmSenderOrders": "",
19
+ "updateWithdraw": "",
20
+ "createImport": "",
21
+ "updateImport": "",
22
+ "getDeliveries": "",
23
+ "getOrderInfo": "",
24
+ "searchDeliveryList": "",
25
+ "confirmSenderParcels": "",
26
+ "searchSenderOrdersStatuses": "",
27
+ "getImports": "",
28
+ "getWithdraws": "",
29
+ "cancelImport": "",
30
+ "cancelWithdraw": ""
31
+ }
32
+
33
+ YANDEX_DELIVERY: {
34
+ "client": {
35
+ "id": 0
36
+ },
37
+ "warehouses": [
38
+ {
39
+ "id": 0,
40
+ "name": "Склад"
41
+ }
42
+ ],
43
+ "senders": [
44
+ {
45
+ "id": 0,
46
+ "name": "Магазин"
47
+ }
48
+ ],
49
+ "requisites": [
50
+ {
51
+ "id": 0,
52
+ "name": "Рога и Копыта"
53
+ }
54
+ ]
55
+ }
@@ -1,5 +1,4 @@
1
1
  module YandexDelivery
2
-
3
2
  class << self
4
3
 
5
4
  def setup
@@ -15,14 +14,33 @@ module YandexDelivery
15
14
  def build_params method_name, params={}
16
15
  params[:client_id] = YandexDelivery.client["id"]
17
16
  params[:sender_id] = params[:sender_id] || YandexDelivery.senders.first["id"]
18
- params[:secret_key] = Digest::MD5.hexdigest("#{params.sort.map{|k,v| v}.join('')}#{YandexDelivery.send("#{method_name}_key")}")
17
+ params.each do |k, v|
18
+ if v.kind_of?(Array)
19
+ params[k] = v.map.with_index {|v,i| [i,v]}.to_h
20
+ end
21
+ end
22
+ params[:secret_key] = Digest::MD5.hexdigest("#{post_values(params)}#{YandexDelivery.send("#{method_name}_key")}")
19
23
  params
20
24
  end
21
25
 
26
+ def post_values params
27
+ return params unless params.kind_of?(Array) || params.kind_of?(Hash)
28
+ if params.kind_of?(Array)
29
+ params.map(&method(:post_values)).join('')
30
+ else
31
+ params.sort.map{|k,v|
32
+ post_values(v)
33
+ }.join('')
34
+ end
35
+ end
36
+
22
37
  def create_method name
23
38
  define_singleton_method(name) do |params = {}|
24
39
  request name, params
25
40
  end
41
+ define_method(name) do |params = {}|
42
+ request name, params
43
+ end
26
44
  end
27
45
 
28
46
  def register(name, value, type = nil)
@@ -65,5 +83,5 @@ module YandexDelivery
65
83
  @setting
66
84
  end
67
85
  end
68
-
86
+
69
87
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex-delivery-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Osetrov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-31 00:00:00.000000000 Z
11
+ date: 2020-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -30,8 +30,14 @@ executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
+ - LICENSE
34
+ - README.md
35
+ - lib/generators/yandex_delivery/install/USAGE
36
+ - lib/generators/yandex_delivery/install/install_generator.rb
37
+ - lib/generators/yandex_delivery/install/templates/yandex_delivery.rb
38
+ - lib/generators/yandex_delivery/install/templates/yandex_delivery.yml
33
39
  - lib/yandex_delivery.rb
34
- homepage: https://rubygems.org/gems/yandex-delivery-api
40
+ homepage: https://github.com/osetrov/yandex-delivery-api
35
41
  licenses:
36
42
  - MIT
37
43
  metadata: {}