torg_mailru_api 0.0.5
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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +53 -0
- data/Rakefile +1 -0
- data/lib/torg_mailru_api.rb +459 -0
- data/lib/torg_mailru_api/version.rb +4 -0
- data/torg_mailru_api.gemspec +26 -0
- metadata +119 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Alexander Kovalenko
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# TorgMailruApi
|
2
|
+
|
3
|
+
Товары@Mail.Ru (torg.mail.ru) Content API Wrapper for Ruby.
|
4
|
+
|
5
|
+
Torg.Mail.Ru Content API documentation is available [here](http://torg.mail.ru/info/217/).
|
6
|
+
|
7
|
+
[](http://badge.fury.io/rb/torg_mailru_api)
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
gem 'torg_mailru_api'
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install torg_mailru_api
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
``` ruby
|
26
|
+
require 'torg_mailru_api'
|
27
|
+
|
28
|
+
TorgMailruApi.configure do |c|
|
29
|
+
c.access_token = 'YourSecretAccessToken'
|
30
|
+
end
|
31
|
+
|
32
|
+
TorgMailruApi.vendors.each do |vendor|
|
33
|
+
p vendor.name
|
34
|
+
end
|
35
|
+
|
36
|
+
region = TorgMailruApi.region(310)
|
37
|
+
print region.id, " - ", region.name, "\n"
|
38
|
+
# 310 - Ростовская обл.
|
39
|
+
|
40
|
+
TorgMailruApi.region_suggest(:query => 'ростов').each do |region|
|
41
|
+
print region.id, " - ", region.name, "\n"
|
42
|
+
end
|
43
|
+
# 1769 - Ростов
|
44
|
+
# 1833 - Ростов-на-Дону
|
45
|
+
```
|
46
|
+
|
47
|
+
## Contributing
|
48
|
+
|
49
|
+
1. Fork it
|
50
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
51
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
52
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
53
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,459 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
require 'faraday_middleware'
|
5
|
+
require 'ostruct'
|
6
|
+
require "torg_mailru_api/version"
|
7
|
+
|
8
|
+
module TorgMailruApi
|
9
|
+
|
10
|
+
ENDPOINT_URI = "http://content.api.torg.mail.ru/#{API_VERSION}"
|
11
|
+
|
12
|
+
module Configuration
|
13
|
+
attr_accessor :access_token, :cache, :proxy, :logger, :adapter
|
14
|
+
def configure
|
15
|
+
yield self
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module Connection
|
20
|
+
def connection
|
21
|
+
raise "No access token" if access_token.nil?
|
22
|
+
@connection ||= begin
|
23
|
+
conn = Faraday.new ENDPOINT_URI do |c|
|
24
|
+
c.use Faraday::Response::RaiseError
|
25
|
+
c.use :instrumentation
|
26
|
+
c.response :json, content_type: 'application/json'
|
27
|
+
c.response :caching, cache, strip_params: access_token unless cache.nil?
|
28
|
+
c.response :logger, logger unless logger.nil?
|
29
|
+
c.adapter adapter.nil? ? Faraday.default_adapter : adapter
|
30
|
+
c.proxy proxy if not proxy.nil?
|
31
|
+
c.headers = {
|
32
|
+
'Accept' => 'application/json',
|
33
|
+
'Authorization' => access_token
|
34
|
+
}
|
35
|
+
end
|
36
|
+
conn
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def get resource, params=nil
|
41
|
+
response = connection.get "#{resource}.json", params
|
42
|
+
response.body
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
module APIRequest
|
47
|
+
|
48
|
+
|
49
|
+
class DeepOpenStruct < OpenStruct
|
50
|
+
|
51
|
+
def to_h
|
52
|
+
convert_to_hash_recursive self.dup
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.load item
|
56
|
+
raise ArgumentError, "DeepOpenStruct must be passed a Hash or Array" unless(item.is_a?(Hash) || item.is_a?(Array))
|
57
|
+
self.convert_from_hash_recursive item
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def self.convert_from_hash_recursive obj
|
63
|
+
result = obj
|
64
|
+
case result
|
65
|
+
when Hash
|
66
|
+
result = result.dup
|
67
|
+
result.each do |k,v|
|
68
|
+
result[k] = convert_from_hash_recursive(v)
|
69
|
+
end
|
70
|
+
result = DeepOpenStruct.new result
|
71
|
+
when Array
|
72
|
+
result = result.map { |v| convert_from_hash_recursive(v) }
|
73
|
+
end
|
74
|
+
result
|
75
|
+
end
|
76
|
+
|
77
|
+
def convert_to_hash_recursive obj
|
78
|
+
result = obj
|
79
|
+
case result
|
80
|
+
when OpenStruct
|
81
|
+
result = result.marshal_dump
|
82
|
+
result.each do |k,v|
|
83
|
+
result[k] = convert_to_hash_recursive(v)
|
84
|
+
end
|
85
|
+
when Array
|
86
|
+
result = result.map { |v| convert_to_hash_recursive(v) }
|
87
|
+
end
|
88
|
+
result
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def decamelize_hash_keys value
|
93
|
+
case value
|
94
|
+
when Array
|
95
|
+
value.map { |v| decamelize_hash_keys(v) }
|
96
|
+
when Hash
|
97
|
+
Hash[value.map { |k, v| [ k.scan(/[A-Z][a-z]*|[a-z]+/).join('_').downcase, decamelize_hash_keys(v) ] }]
|
98
|
+
when String
|
99
|
+
value.gsub(/\s{2,}|[\r\n]/, ' ').strip
|
100
|
+
else
|
101
|
+
value
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def get resource, params=nil
|
106
|
+
response = super
|
107
|
+
hash = decamelize_hash_keys response[response.keys.first]
|
108
|
+
DeepOpenStruct.load hash
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
class Listing
|
114
|
+
include Enumerable
|
115
|
+
include TorgMailruApi
|
116
|
+
|
117
|
+
def initialize resource, params=nil
|
118
|
+
@resource = resource
|
119
|
+
@params = params.nil? ? {} : params
|
120
|
+
@params[:page] = @params.fetch(:page, 1)
|
121
|
+
@items = []
|
122
|
+
@more = true
|
123
|
+
end
|
124
|
+
|
125
|
+
def each
|
126
|
+
return to_enum(:each) unless block_given?
|
127
|
+
while true
|
128
|
+
break unless fetch_next_page if @items.empty?
|
129
|
+
yield @items.shift
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def fetch_next_page
|
134
|
+
if @more
|
135
|
+
r = TorgMailruApi.get @resource, @params
|
136
|
+
@more = (r.results_total-r.results_per_page*r.page) > 0
|
137
|
+
@items = r.listing
|
138
|
+
@params[:page] += 1
|
139
|
+
true
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
module APIMethods
|
145
|
+
def listing resource, params=nil
|
146
|
+
Listing.new resource, params
|
147
|
+
end
|
148
|
+
|
149
|
+
### Товарные категории
|
150
|
+
|
151
|
+
## Список категорий
|
152
|
+
# Получение списка товарных категорий верхнего уровня.
|
153
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
154
|
+
# Входные параметры:
|
155
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
156
|
+
# geo_id Число Идентификатор региона. Нет Да
|
157
|
+
# page Число Номер страницы. 1 Нет
|
158
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. выводятся все результаты Нет
|
159
|
+
def categories params
|
160
|
+
listing "category", params
|
161
|
+
end
|
162
|
+
|
163
|
+
|
164
|
+
## Список подкатегорий
|
165
|
+
# Получение списка подкатегорий для товарной категории.
|
166
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
167
|
+
# Входные параметры:
|
168
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
169
|
+
# geo_id Число Идентификатор региона. Да
|
170
|
+
# type Строка Фильтрация выходных данных по типу товарной категории: all | model | parameterized | general all Нет
|
171
|
+
# page Число Номер страницы. 1 Нет
|
172
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. выводятся все результаты Нет
|
173
|
+
def category_children category_id, params
|
174
|
+
listing "category/#{category_id}/children", params
|
175
|
+
end
|
176
|
+
|
177
|
+
## Информация о категории
|
178
|
+
# Получение информации о товарной категории.
|
179
|
+
# Ресурс является геозависимым.
|
180
|
+
# Входные параметры:
|
181
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
182
|
+
# geo_id Число Идентификатор региона. Да
|
183
|
+
def category category_id, params
|
184
|
+
get "category/#{category_id}", params
|
185
|
+
end
|
186
|
+
|
187
|
+
## Список параметров категории
|
188
|
+
# Получение списка параметров товарной категории
|
189
|
+
# Входные параметры:
|
190
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
191
|
+
# parameter_set Строка Тип набора параметров категории. popular | all popular Нет
|
192
|
+
def category_parameters category_id, params=nil
|
193
|
+
get "category/#{category_id}/parameters", params
|
194
|
+
end
|
195
|
+
|
196
|
+
## Список моделей категории
|
197
|
+
# Получение списка моделей в модельной товарной категории. Для обычных категорий ресурс возвращает ошибку.
|
198
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
199
|
+
# Входные параметры:
|
200
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
201
|
+
# geo_id Число Идентификатор региона. Да
|
202
|
+
# vendor_id Число Идентификатор производителя. Нет
|
203
|
+
# sort Строка Тип сортировки моделей. date - сортировка по новизне; popular - сортировка по популярности; price - сортировка по цене. popular Нет
|
204
|
+
# sort_order Строка Направление сортировки. asc - по возрастанию desc - по убыванию desc Нет
|
205
|
+
# page Число Номер страницы. 1 Нет
|
206
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
207
|
+
def category_models category_id, params
|
208
|
+
listing "category/#{category_id}/models", params
|
209
|
+
end
|
210
|
+
|
211
|
+
## Список товарных предложений категории
|
212
|
+
# Получение списка товарных предложений в обычной товарной категории. Для модельных и параметризированных категорий ресурс возвращает ошибку.
|
213
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
214
|
+
# Входные параметры:
|
215
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
216
|
+
# geo_id Число Идентификатор региона. Да
|
217
|
+
# category_id Число Идентификатор товарной категории. Да
|
218
|
+
# sort Строка Тип сортировки предложений. auction - по убыванию ставки; price - сортировка по цене. auction Нет
|
219
|
+
# sort_order Строка Направление сортировки. asc - по возрастанию desc - по убыванию desc Нет
|
220
|
+
# page Число Номер страницы. 1 Нет
|
221
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
222
|
+
def category_offers category_id, params
|
223
|
+
listing "category/#{category_id}/offers", params
|
224
|
+
end
|
225
|
+
|
226
|
+
## Список хитов продаж категории
|
227
|
+
# Получение списка 50 моделей - хитов продаж модельной товарной категории. Для обычных категорий ресурс возвращает ошибку.
|
228
|
+
# Список отсортирован по степени убывания популярности у покупателей.
|
229
|
+
# Ресурс является геозависимым.
|
230
|
+
# Входные параметры:
|
231
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
232
|
+
# geo_id Число Идентификатор региона. Да
|
233
|
+
def category_hits category_id, params
|
234
|
+
listing "category/#{category_id}/hits", params
|
235
|
+
end
|
236
|
+
|
237
|
+
# Список новинок категории
|
238
|
+
# Получение списка моделей в модельной товарной категории. Для обычных категорий ресурс возвращает ошибку.
|
239
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
240
|
+
# Входные параметры:
|
241
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
242
|
+
# geo_id Число Идентификатор региона. Да
|
243
|
+
# sort Строка Тип сортировки моделей. popular - сортировка по популярности; price - сортировка по цене. popular Нет
|
244
|
+
# sort_order Строка Направление сортировки. asc - по возрастанию desc - по убыванию desc Нет
|
245
|
+
# page Число Номер страницы. 1 Нет
|
246
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
247
|
+
def category_newmodels category_id, params
|
248
|
+
listing "category/#{category_id}/newmodels", params
|
249
|
+
end
|
250
|
+
|
251
|
+
|
252
|
+
### Модели товаров
|
253
|
+
|
254
|
+
## Информация о модели
|
255
|
+
# Получение информации об указанной модели.
|
256
|
+
# Ресурс является геозависимым.
|
257
|
+
# Входные параметры:
|
258
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
259
|
+
# geo_id Число Идентификатор региона Да
|
260
|
+
def model model_id, params
|
261
|
+
get "model/#{model_id}", params
|
262
|
+
end
|
263
|
+
|
264
|
+
## Список характеристик модели
|
265
|
+
# Получение списка характеристик указанной модели.
|
266
|
+
# Входные параметры:
|
267
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
268
|
+
# parameter_set Строка popular|all popular Нет
|
269
|
+
def model_parameters model_id, params=nil
|
270
|
+
get "model/#{model_id}/parameters", params
|
271
|
+
end
|
272
|
+
|
273
|
+
# Список предложений модели
|
274
|
+
# Получение списка товарных предложений указанной модели.
|
275
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
276
|
+
# Входные параметры:
|
277
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
278
|
+
# geo_id Число Идентификатор региона. Да
|
279
|
+
# sort Строка Тип сортировки предложений.
|
280
|
+
# price - по цене;
|
281
|
+
# rating - по рейтингу магазина + цене;
|
282
|
+
# range - по расстоянию до ближайшей точки продаж (при указании местоположения пользователя);
|
283
|
+
# auction - по убыванию ставки.
|
284
|
+
# auction Нет
|
285
|
+
# sort_order Строка Направление сортировки. Задается только в том случае, если у параметра sort_order указано значение price.
|
286
|
+
# asc - по возрастанию desc - по убыванию
|
287
|
+
# если у параметра sort_order указано значение price, сортировка по возрастанию;
|
288
|
+
# если у параметра sort_order указано значение rating, сортировка по убыванию;
|
289
|
+
# если у параметра sort_order указано значение range, сортировка по возрастанию.
|
290
|
+
# Нет
|
291
|
+
# page Число Номер страницы. 1 Нет
|
292
|
+
# results_per_page Число Количество результатов на страницу.
|
293
|
+
# Максимальное значение: 30. 10 Нет
|
294
|
+
# latitude Число Широта точки нахождения пользователя. Нет
|
295
|
+
# longitude Число Долгота точки нахождения пользователя. Нет
|
296
|
+
def model_offers model_id, params
|
297
|
+
listing "model/#{model_id}/offers", params
|
298
|
+
end
|
299
|
+
|
300
|
+
## Список точек продаж модели
|
301
|
+
# Получение списка точек продаж указанной модели.
|
302
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
303
|
+
# Входные параметры:
|
304
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
305
|
+
# geo_id Число Идентификатор региона. Да
|
306
|
+
# page Число Номер страницы. 1 Нет
|
307
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
308
|
+
# latitude Число Широта точки нахождения пользователя. Нет
|
309
|
+
# longitude Число Долгота точки нахождения пользователя. Нет
|
310
|
+
def model_outlets model_id, params
|
311
|
+
listing "model/#{model_id}/outlets", params
|
312
|
+
end
|
313
|
+
|
314
|
+
### Товарные предложения
|
315
|
+
|
316
|
+
## Информация о товарном предложении
|
317
|
+
# Получение расширенной информации об указанном товарном предложении магазина.
|
318
|
+
def offer offer_id, params=nil
|
319
|
+
get "offer/#{offer_id}", params
|
320
|
+
end
|
321
|
+
|
322
|
+
### Поиск
|
323
|
+
|
324
|
+
## Полнотекстовый поиск
|
325
|
+
# Получение списка моделей и товарных предложений, удовлетворяющих строке запроса.
|
326
|
+
# Входные параметры:
|
327
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
328
|
+
# geo_id Число Идентификатор региона. Да
|
329
|
+
# query Строка Поисковый запрос. Да
|
330
|
+
# category_id Число Фильтрация результатов поиска по товарной категории. Нет
|
331
|
+
# seller_id Число Фильтрация результатов поиска по магазину. Нет
|
332
|
+
# price_min Число Фильтрация результатов поиска по минимальной цене товарных предложений. Нет
|
333
|
+
# price_max Число Фильтрация результатов поиска по максимальной цене товарных предложений. Нет
|
334
|
+
# sort Строка Тип сортировки результатов поиска. price - сортировка по возрастанию цены. relevance - по релевантности. relevance Нет
|
335
|
+
# page Число Номер страницы. 1 Нет
|
336
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
337
|
+
def search params
|
338
|
+
listing "search", params
|
339
|
+
end
|
340
|
+
|
341
|
+
## Параметрический поиск
|
342
|
+
# Получение списка моделей категории, удовлетворяющих набору заданных параметров.
|
343
|
+
# Входные параметры:
|
344
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
345
|
+
# geo_id Число Идентификатор региона. Да
|
346
|
+
# {parameter_id} Строка Параметр товарной категории.
|
347
|
+
# В запросе вместо {parameter_id} указыватся id параметра. Список параметров и их id для определенной товарной категории можно получить с помощью ресурса "Список параметров категории".
|
348
|
+
# Значение зависит от типа выбранного параметра категории:
|
349
|
+
# тип параметра numeric - числовое значение {value} или числовой диапазон, значения границ которого разделяются запятой {min_value},{max_value};
|
350
|
+
# тип параметра enum - список идентификаторов допустимых значений параметра, разделенный запятыми, {value1_id},{value2_id},{value3_id}, где {valueN_id} - идентификатор значения;
|
351
|
+
# тип параметра bool - допустимые значения параметра: true и false. Нет
|
352
|
+
# sort Строка Тип сортировки результатов поиска. date - по новизне; popular - популярности; price - по цене; popular Нет
|
353
|
+
# sort_order Строка Направление сортировки по цене. asc - по возрастанию desc - по убыванию desc Нет
|
354
|
+
# page Число Номер страницы. 1 Нет
|
355
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
356
|
+
def category_filter category_id, params
|
357
|
+
listing "category/#{category_id}/filter", params
|
358
|
+
end
|
359
|
+
|
360
|
+
### Отзывы
|
361
|
+
|
362
|
+
## Отзывы о магазине
|
363
|
+
# Получение списка отзывов о магазине.
|
364
|
+
# Входные параметры:
|
365
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
366
|
+
# sort Строка Тип сортировки отзывов. mark - по оценке пользователя; date - по дате добавления отзыва; valuable - по оценке полезности отзыва. date Нет
|
367
|
+
# sort_order Строка Направление сортировки. asc - по возрастанию desc - по убыванию desc Нет
|
368
|
+
# mark Число Фильтрация отзывов по оценке магазина. Возможные значения: 1 2 3 4 5 all - все значения all Нет
|
369
|
+
# page Число Номер страницы. 1 Нет
|
370
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 0 (выводятся все результаты) Нет
|
371
|
+
def seller_reviews seller_id, params
|
372
|
+
listing "seller/#{seller_id}/reviews", params
|
373
|
+
end
|
374
|
+
|
375
|
+
### Магазины
|
376
|
+
|
377
|
+
## Информация о магазине
|
378
|
+
# Получение информации о выбранном магазине.
|
379
|
+
def seller seller_id
|
380
|
+
get "seller/#{seller_id}"
|
381
|
+
end
|
382
|
+
|
383
|
+
## Список точек продаж магазина
|
384
|
+
# Получение списка точек продаж выбранного магазина.
|
385
|
+
# Ресурс является геозависимым и в ответе возвращает листинг.
|
386
|
+
# Входные параметры:
|
387
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
388
|
+
# geo_id Число Идентификатор региона. Да
|
389
|
+
# page Число Номер страницы. 1 Нет
|
390
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
391
|
+
# latitude Число Широта точки нахождения пользователя. Нет
|
392
|
+
# longitude Число Долгота точки нахождения пользователя. Нет
|
393
|
+
def seller_outlets seller_id, params
|
394
|
+
listing "seller/#{seller_id}/outlets", params
|
395
|
+
end
|
396
|
+
|
397
|
+
### Производители
|
398
|
+
|
399
|
+
## Список производителей
|
400
|
+
# Получение списка производителей, товары которых представлены в каталоге моделей на Товарах@Mail.Ru
|
401
|
+
# Ресурс в ответе возвращает листинг.
|
402
|
+
# Входные параметры:
|
403
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
404
|
+
# category_id Число Идентификатор товарной категории, для которой нужно получить список производителей. Нет
|
405
|
+
# page Число Номер страницы. 1 Нет
|
406
|
+
# results_per_page Число Количество результатов на страницу.
|
407
|
+
# Максимальное значение: 30. 0 (выводятся все результаты) Нет
|
408
|
+
def vendors
|
409
|
+
listing "vendor"
|
410
|
+
end
|
411
|
+
|
412
|
+
## Информация о производителе
|
413
|
+
# Получение информации о производителе.
|
414
|
+
def vendor vendor_id, params=nil
|
415
|
+
get "vendor/#{vendor_id}"
|
416
|
+
end
|
417
|
+
|
418
|
+
### Геоинформация
|
419
|
+
|
420
|
+
## Список регионов
|
421
|
+
# Получение списка регионов верхнего уровня.
|
422
|
+
# Ресурс в ответе возвращает листинг.
|
423
|
+
# Входные параметры:
|
424
|
+
# Параметр / Тип / Описание / Значение по умолчанию / Обязательный
|
425
|
+
# page Число Номер страницы. 1 Нет
|
426
|
+
# results_per_page Число Количество результатов на страницу. Максимальное значение: 30. 10 Нет
|
427
|
+
def regions params=nil
|
428
|
+
listing "regions", params
|
429
|
+
end
|
430
|
+
|
431
|
+
## Список дочерних регионов
|
432
|
+
# Получение списка дочерних регионов для выбранного региона.
|
433
|
+
# Ресурс в ответе возвращает листинг.
|
434
|
+
def region_children region_id, params=nil
|
435
|
+
listing "region/#{region_id}/children", params
|
436
|
+
end
|
437
|
+
|
438
|
+
## Информация о регионе
|
439
|
+
# Получение информации о выбранном регионе.
|
440
|
+
# Ошибка в документации: Ресурс в ответе НЕ возвращает листинг.
|
441
|
+
def region region_id
|
442
|
+
get "region/#{region_id}"
|
443
|
+
end
|
444
|
+
|
445
|
+
## Текстовый поиск региона
|
446
|
+
# Получение списка регионов, удовлетворяющих строке запроса.
|
447
|
+
# Ошибка в документации: Ресурс в ответе НЕ возвращает листинг.
|
448
|
+
def region_suggest params
|
449
|
+
get "region/suggest", params
|
450
|
+
end
|
451
|
+
|
452
|
+
end
|
453
|
+
|
454
|
+
extend Configuration
|
455
|
+
extend Connection
|
456
|
+
extend APIRequest
|
457
|
+
extend APIMethods
|
458
|
+
|
459
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'torg_mailru_api/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "torg_mailru_api"
|
8
|
+
spec.version = TorgMailruApi::VERSION
|
9
|
+
spec.authors = ["Alexander Kovalenko"]
|
10
|
+
spec.email = ["alexanderk23@gmail.com"]
|
11
|
+
spec.description = %q{Torg.Mail.Ru Content API Wrapper}
|
12
|
+
spec.summary = %q{Torg.Mail.Ru Content API Wrapper}
|
13
|
+
spec.homepage = "https://github.com/alexanderk23/torg_mailru_api"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
|
24
|
+
spec.add_runtime_dependency 'faraday', '~> 0.8.8'
|
25
|
+
spec.add_runtime_dependency 'faraday_middleware', '~> 0.9.0'
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: torg_mailru_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Alexander Kovalenko
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-12-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: faraday
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.8.8
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.8.8
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: faraday_middleware
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.9.0
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.9.0
|
78
|
+
description: Torg.Mail.Ru Content API Wrapper
|
79
|
+
email:
|
80
|
+
- alexanderk23@gmail.com
|
81
|
+
executables: []
|
82
|
+
extensions: []
|
83
|
+
extra_rdoc_files: []
|
84
|
+
files:
|
85
|
+
- .gitignore
|
86
|
+
- Gemfile
|
87
|
+
- LICENSE.txt
|
88
|
+
- README.md
|
89
|
+
- Rakefile
|
90
|
+
- lib/torg_mailru_api.rb
|
91
|
+
- lib/torg_mailru_api/version.rb
|
92
|
+
- torg_mailru_api.gemspec
|
93
|
+
homepage: https://github.com/alexanderk23/torg_mailru_api
|
94
|
+
licenses:
|
95
|
+
- MIT
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 1.8.25
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: Torg.Mail.Ru Content API Wrapper
|
118
|
+
test_files: []
|
119
|
+
has_rdoc:
|