yandex-dostavka 0.0.1 → 0.0.4

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: cbb5ab099b6984b9856405b5c43a7116d47495b7c88f08bd22d7adf493dc6996
4
- data.tar.gz: 42ea3078f2cb52aaa2e7eacf8a47480d7f7cd3f60e85ec5f56cfbc4e885c3a16
3
+ metadata.gz: 9640f2cfed42f6a1ad69212d4c255ca82482f1e4f98a2d4a0b5b50316aea99d7
4
+ data.tar.gz: 3c29642ce1ab73e829030fd3ba4a4a95eabc38b315370b891559c3a409beed35
5
5
  SHA512:
6
- metadata.gz: 459ccb9da2c1e49de500eddbf6ae57a4e10c8c8185425f8e82f6f57ebd7b8b3c9d3e65008a163c2b7d7a52ce20fa4ff0ffe0890895cfa1dad80af2af84128a09
7
- data.tar.gz: d94127db0ade19647fbf9f0b4b6bd13997dd2f507579d48e5574380a5c45346802a18bb870964c46f498b124e518f5b193464dfdc0d0e8e9e4a2ddad209a904d
6
+ metadata.gz: 51041e29403e882c72a1b4403428e1f8b9b65eeb521ad56472e6ddb3cb841dae25b097b2beee0c4756505a1694c95785d212620e641db6182652fd9bea0bf32f
7
+ data.tar.gz: a30bda566869acd6974153480b7571e5504e1e3d5a00e5241cf07cc467b0a125f237fe296328584db802ad63e855675de7aff27f182246e27e4b59631238d683
data/README.markdown CHANGED
@@ -1,6 +1,6 @@
1
1
  # Yandex Dostavka API
2
2
 
3
- API wrapper для Yandex Dostavka API
3
+ API wrapper для [Yandex Dostavka API](https://yandex.ru/dev/logistics/delivery-api/doc/about/intro.html)
4
4
 
5
5
  # Оглавление
6
6
  0. [Установка](#install)
@@ -8,6 +8,22 @@ API wrapper для Yandex Dostavka API
8
8
  2. [Использование Ruby](#using_ruby)
9
9
  3. [Debug Logging](#debug_logging)
10
10
  4. [Custom logger](#custom_logger)
11
+ 1. [Подготовка заявки](#part1)
12
+ 1. [Предварительная оценка стоимости доставки](#api_b2b_platform_pricing-calculator_post)
13
+ 2. [Получение интервалов доставки](#api_b2b_platform_offers_info_get)
14
+ 2. [Точки самопривоза и ПВЗ](#part2)
15
+ 1. [Получение идентификатора населённого пункта](#api_b2b_platform_location_detect_post)
16
+ 2. [Получение списка точек самопривоза и ПВЗ](#api_b2b_platform_pickup-points_list_post)
17
+ 3. [Основные запросы](#part3)
18
+ 1. [Создание заявки](#api_b2b_platform_offers_create_post)
19
+ 2. [Подтверждение заявки](#api_b2b_platform_offers_confirm_post)
20
+ 3. [Получение информации о заявке](#api_b2b_platform_request_info_get)
21
+ 4. [Получение информации о заявках во временном интервале](#api_b2b_platform_requests_info_get)
22
+ 5. [История статусов заявки](#api_b2b_platform_request_history_get)
23
+ 6. [Отмена заявки](#api_b2b_platform_request_cancel_post)
24
+ 4. [Ярлыки и акты приема-передачи](#part4)
25
+ 1. [Получение ярлыков](#api_b2b_platform_request_generate-labels_post)
26
+ 2. [Получение актов приёма-передачи для отгрузки](#api_b2b_platform_request_get-handover-act_post)
11
27
 
12
28
  # <a name="install"></a> Установка
13
29
 
@@ -41,10 +57,10 @@ API wrapper для Yandex Dostavka API
41
57
  Сначала создайте экземпляр объекта `YandexDostavka::Request`:
42
58
 
43
59
  ```ruby
44
- dostavka = YandexDostavka::Request.new(api_key: "***")
60
+ dostavka = YandexDostavka::Request.new(token: "your_token")
45
61
  ```
46
62
 
47
- Вы можете изменять `api_key`, `timeout`, `open_timeout`, `faraday_adapter`, `proxy`, `symbolize_keys`, `logger`, и `debug`:
63
+ Вы можете изменять `token`, `timeout`, `open_timeout`, `faraday_adapter`, `proxy`, `symbolize_keys`, `logger`, и `debug`:
48
64
 
49
65
  ```ruby
50
66
  YandexDostavka::Request.timeout = 15
@@ -52,7 +68,7 @@ YandexDostavka::Request.open_timeout = 15
52
68
  YandexDostavka::Request.symbolize_keys = true
53
69
  YandexDostavka::Request.debug = false
54
70
 
55
- YandexDostavka::Request.api_key = "your_api_key"
71
+ YandexDostavka::Request.token = "your_token"
56
72
  ```
57
73
 
58
74
  Либо в файле `config/initializers/yandex_dostavka.rb` для Rails.
@@ -62,7 +78,7 @@ YandexDostavka::Request.api_key = "your_api_key"
62
78
  Измените `debug: true` чтобы включить логирование в STDOUT.
63
79
 
64
80
  ```ruby
65
- dostavka = YandexDostavka::Request.new(api_key: "***", debug: true)
81
+ dostavka = YandexDostavka::Request.new(token: "AgAAAADzeAQMAAAPeISvM_9LUkxCijQoFXOH5QE", debug: true)
66
82
  ```
67
83
 
68
84
  ### <a name="custom_logger"></a> Custom logger
@@ -70,7 +86,7 @@ dostavka = YandexDostavka::Request.new(api_key: "***", debug: true)
70
86
  `Logger.new` используется по умолчанию, но вы можете изменить на свой:
71
87
 
72
88
  ```ruby
73
- dostavka = YandexDostavka::Request.new(api_key: "***", debug: true, logger: MyLogger.new)
89
+ dostavka = YandexDostavka::Request.new(token: "AgAAAADzeAQMAAAPeISvM_9LUkxCijQoFXOH5QE", debug: true, logger: MyLogger.new)
74
90
  ```
75
91
 
76
92
  Или:
@@ -79,4 +95,175 @@ dostavka = YandexDostavka::Request.new(api_key: "***", debug: true, logger: MyLo
79
95
  YandexDostavka::Request.logger = MyLogger.new
80
96
  ```
81
97
 
82
- # <a name="examples"></a> Примеры
98
+ ## <a name="part1"></a> [Подготовка заявки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part1.html)
99
+ ### <a name="api_b2b_platform_pricing-calculator_post"></a> [Предварительная оценка стоимости доставки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part1/api_b2b_platform_pricing-calculator_post.html)
100
+ ```ruby
101
+ body = {
102
+ client_price: 10000,
103
+ destination: {
104
+ address: "Санкт-Петербург, ул. Академика Павлова, д. 5"
105
+ },
106
+ payment_method: "already_paid",
107
+ source: {
108
+ address: "Санкт-Петербург, ул. Профессора Попова, д. 38"
109
+ },
110
+ tariff: "time_interval",
111
+ total_assessed_price: 10000,
112
+ total_weight: 1000
113
+ }
114
+ response = YandexDostavka::Request.pricing_calculator.create(body: body)
115
+ pricing_total = response.body[:pricing_total]
116
+ #=> "360 RUB"
117
+ ```
118
+ ### <a name="api_b2b_platform_offers_info_get"></a> [Получение интервалов доставки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part1/api_b2b_platform_offers_info_get.html)
119
+ ```ruby
120
+ params = {
121
+ station_id: "03840f16-3c53-400c-b382-1ecf30e06b64",
122
+ full_address: "Санкт-Петербург, Професора Попова, 38",
123
+ geo_id: 2
124
+ }
125
+ response = YandexDostavka::Request.offers.info.retrieve(params: params)
126
+ ```
127
+ ## <a name="part2"></a> [Точки самопривоза и ПВЗ](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part2.html)
128
+ ### <a name="api_b2b_platform_location_detect_post"></a> [Получение идентификатора населённого пункта](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part2/api_b2b_platform_location_detect_post.html)
129
+ ```ruby
130
+ body = {
131
+ location: "Санкт-Петербург"
132
+ }
133
+ response = YandexDostavka::Request.location.detect.create(body: body)
134
+ variants = response.body[:variants]
135
+ #=> [{:geo_id=>2, :address=>"Россия, Санкт-Петербург"}]
136
+ ```
137
+ ### <a name="api_b2b_platform_pickup-points_list_post"></a> [Получение списка точек самопривоза и ПВЗ](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part2/api_b2b_platform_pickup-points_list_post.html)
138
+ ```ruby
139
+ body = {
140
+ available_for_dropoff: true,
141
+ payment_method: "already_paid",
142
+ type: "pickup_point"
143
+ }
144
+ response = YandexDostavka::Request.pickup_points.list.create(body: body)
145
+ points = response.body[:points]
146
+ # =>
147
+ # [{:id=>"03840f16-3c53-400c-b382-1ecf30e06b64",
148
+ # ...
149
+ ```
150
+ ## <a name="part3"></a> [Основные запросы](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3.html)
151
+ ### <a name="api_b2b_platform_offers_create_post"></a> [Создание заявки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3/api_b2b_platform_offers_create_post.html)
152
+ ```ruby
153
+ body = {
154
+ billing_info: {
155
+ delivery_cost: 10000,
156
+ payment_method: "card_on_receipt"
157
+ },
158
+ destination: {
159
+ custom_location: {
160
+ details: {
161
+ comment: "БЦ Ривер Хаус",
162
+ full_address: "Санкт-Петербург, ул. Академика Павлова, 5",
163
+ room: "601"
164
+ }
165
+ },
166
+ interval: {
167
+ from: DateTime.now.to_i,
168
+ to: DateTime.tomorrow.to_datetime.to_i
169
+ },
170
+ type: "custom_location"
171
+ },
172
+ info: {
173
+ comment: "Позвонить за час",
174
+ operator_request_id: "100023"
175
+ },
176
+ items: [
177
+ {
178
+ article: "55185",
179
+ billing_details: {
180
+ assessed_unit_price: 237900,
181
+ unit_price: 237900
182
+ },
183
+ count: 1,
184
+ name: "Автомобильный держатель Mage Safe Qi для iPhone, магнитный, черный",
185
+ place_barcode: "4680431123446"
186
+ }
187
+ ],
188
+ places: [
189
+ {
190
+ barcode: "4680431123446",
191
+ physical_dims: {
192
+ predefined_volume: 10000,
193
+ weight_gross: 1000
194
+ }
195
+ }
196
+ ],
197
+ recipient_info: {
198
+ email: "recipient@email.com",
199
+ first_name: "Осетров",
200
+ last_name: "Павел",
201
+ partonymic: "Федорович",
202
+ phone: "+7111111111111"
203
+ },
204
+ source: {
205
+ platform_station: {
206
+ platform_id: "03840f16-3c53-400c-b382-1ecf30e06b64"
207
+ }
208
+ }
209
+ }
210
+ response = YandexDostavka::Request.offers("create").create(body: body)
211
+ ```
212
+ ### <a name="api_b2b_platform_offers_confirm_post"></a> [Подтверждение заявки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3/api_b2b_platform_offers_confirm_post.html)
213
+ ```ruby
214
+ body = {
215
+ offer_id: "1"
216
+ }
217
+ response = YandexDostavka::Request.offers.confirm.create(body: body)
218
+ ```
219
+ ### <a name="api_b2b_platform_request_info_get"></a> [Получение информации о заявке](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3/api_b2b_platform_request_info_get.html)
220
+ ```ruby
221
+ response = YandexDostavka::Request.request.info.retrieve(params: {request_id: "873113ce-819a-4a73-b500-dce9dae82299"})
222
+ ```
223
+ ### <a name="api_b2b_platform_requests_info_get"></a> [Получение информации о заявках во временном интервале](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3/api_b2b_platform_requests_info_get.html)
224
+ ```ruby
225
+ params = {
226
+ from: (DateTime.now - 7.day).to_i,
227
+ to: DateTime.now.to_i
228
+ }
229
+ response = YandexDostavka::Request.requests.info.retrieve(params: params)
230
+ ```
231
+ ### <a name="api_b2b_platform_request_history_get"></a> [История статусов заявки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3/api_b2b_platform_request_history_get.html)
232
+ ```ruby
233
+ response = YandexDostavka::Request.request.history.retrieve(params: {request_id: "873113ce-819a-4a73-b500-dce9dae82299"})
234
+ ```
235
+ ### <a name="api_b2b_platform_request_cancel_post"></a> [Отмена заявки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part3/api_b2b_platform_request_cancel_post.html)
236
+ ```ruby
237
+ response = YandexDostavka::Request.request.cancel.create(body: {request_id: "873113ce-819a-4a73-b500-dce9dae82299"})
238
+ ```
239
+ ## <a name="part4"></a> [Ярлыки и акты приема-передачи](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part4.html)
240
+ ### <a name="api_b2b_platform_request_generate-labels_post"></a> [Получение ярлыков](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part4/api_b2b_platform_request_generate-labels_post.html)
241
+ ```ruby
242
+ body = {
243
+ generate_type: "many",
244
+ request_ids: [
245
+ "873113ce-819a-4a73-b500-dce9dae82299"
246
+ ]
247
+ }
248
+
249
+ ```
250
+ ### <a name="api_b2b_platform_request_get-handover-act_post"></a> [Получение актов приёма-передачи для отгрузки](https://yandex.ru/dev/logistics/delivery-api/doc/ref/part4/api_b2b_platform_request_get-handover-act_post.html)
251
+ ```ruby
252
+ params = {
253
+ editable_format: true,
254
+ new_requests: true,
255
+ created_since: 1643711508,
256
+ created_until: 1644489108,
257
+ created_since_utc: "2021-10-25T15:00:0.000000Z",
258
+ created_until_utc: "2021-10-25T17:00:0.000000Z",
259
+ request_ids: "873113ce-819a-4a73-b500-dce9dae82299,dbc17cb3-d3de-48e2-9f7f-b4ff23095df7",
260
+ request_code: "my_request_id_123"
261
+ }
262
+ body = {
263
+ request_ids: [
264
+ "873113ce-819a-4a73-b500-dce9dae82299",
265
+ "dbc17cb3-d3de-48e2-9f7f-b4ff23095df7"
266
+ ]
267
+ }
268
+ response = YandexDostavka::Request.request.get_handover_act.create(params: params, body: body)
269
+ ```
@@ -8,7 +8,7 @@ YandexDostavka.setup do |config|
8
8
  config::register k.underscore.to_sym, v
9
9
  end
10
10
 
11
- config::Request.token ||= ENV['YANDEX_DOSTAVKA_TOKEN']
11
+ config::Request.token = YandexDostavka.token || ENV['YANDEX_DOSTAVKA_TOKEN']
12
12
 
13
13
  config::Request.timeout = 60
14
14
  config::Request.open_timeout = 60
@@ -0,0 +1,12 @@
1
+ defaults: &defaults
2
+ API_ENDPOINT: "https://b2b.taxi.tst.yandex.net"
3
+ production:
4
+ <<: *defaults
5
+ API_ENDPOINT: "https://b2b-authproxy.taxi.yandex.net"
6
+ YANDEX_DOSTAVKA_TOKEN: "***"
7
+ development:
8
+ <<: *defaults
9
+ API_ENDPOINT: "https://b2b.taxi.tst.yandex.net"
10
+ YANDEX_DOSTAVKA_TOKEN: "AgAAAADzeAQMAAAPeISvM_9LUkxCijQoFXOH5QE"
11
+ test:
12
+ <<: *defaults
@@ -1,3 +1,3 @@
1
1
  module YandexDostavka
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex-dostavka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Osetrov
@@ -74,10 +74,10 @@ extra_rdoc_files: []
74
74
  files:
75
75
  - LICENSE
76
76
  - README.markdown
77
- - lib/generators/yandex-dostavka/install/USAGE
78
- - lib/generators/yandex-dostavka/install/install_generator.rb
79
- - lib/generators/yandex-dostavka/install/templates/yandex_dostavka.rb
80
- - lib/generators/yandex-dostavka/install/templates/yandex_dostavka.yml
77
+ - lib/generators/yandex_dostavka/install/USAGE
78
+ - lib/generators/yandex_dostavka/install/install_generator.rb
79
+ - lib/generators/yandex_dostavka/install/templates/yandex_dostavka.rb
80
+ - lib/generators/yandex_dostavka/install/templates/yandex_dostavka.yml
81
81
  - lib/yandex-dostavka.rb
82
82
  - lib/yandex-dostavka/api_request.rb
83
83
  - lib/yandex-dostavka/error.rb
@@ -1,12 +0,0 @@
1
- defaults: &defaults
2
- API_ENDPOINT: "https://b2b.taxi.tst.yandex.net/"
3
- YANDEX_DOSTAVKA_TOKEN: "***"
4
- production:
5
- <<: *defaults
6
- API_ENDPOINT: "https://b2b-authproxy.taxi.yandex.net"
7
- YANDEX_DOSTAVKA_TOKEN: "***"
8
- development:
9
- <<: *defaults
10
- API_ENDPOINT: "https://b2b.taxi.tst.yandex.net/"
11
- test:
12
- <<: *defaults