moysklad 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: f689b54410b1ea6bf38db44091bbfa37d9650a0d
4
- data.tar.gz: 05e2e80d9a16a7f1b860318ca276a534b8b787a3
3
+ metadata.gz: 7ce9d5b8b1a5f1edb130458f589bc42a2a528785
4
+ data.tar.gz: 6e3d6bcccc02fe6d70b35fa1fb53776860130580
5
5
  SHA512:
6
- metadata.gz: 462cde790f4f03d371c7e56e7d1a8540b8caee937b0fefbeff0d1099963205db2a4abe0b603a6516543c93c22798cc00f65db97afaf0cd8179bc4c82e9517775
7
- data.tar.gz: 9221da267d8df68aa58688833da7e4b5948bfecd1c2c1e22af5f9002cf6a87fab3aa8f8f189d6a148700ad5761436b4414a32d6ad7f3b1e2a7a6656f3773bd06
6
+ metadata.gz: 011d7e2405fdd727a6546f52618ab3be16d06858c6f581f2f7ebef1ec0a51a9621c9ab88f338c7ffc137f471ffa392a06fdbe58f743a21dc9e5ae916fe17653c
7
+ data.tar.gz: bd7eebe8792ae0c4ddd0b5af4515ccbc792157d03a1c405e4477c70bdbd80c707435a36db1a2dffc53a5925c753a6318f5976b40c2e0196997c9028c99e54afc
@@ -1,3 +1,7 @@
1
+ ## 0.1.4 / 2014-12-04
2
+
3
+ * Universe.build для ленивого создания вселенной
4
+
1
5
  ## 0.1.3 / 2014-12-04
2
6
 
3
7
  * Примеры использования и больше документации
data/README.md CHANGED
@@ -1,17 +1,22 @@
1
- # Правильный Ruby-клиент для API moysklad.ru
1
+ # Ruby-клиент для REST XML API Moysklad
2
2
 
3
3
  [![Build Status](https://travis-ci.org/BrandyMint/moysklad.svg)](https://travis-ci.org/BrandyMint/moysklad)
4
+ [![Dependency Status](https://www.versioneye.com/user/projects/548225818674a4b5b90004dd/badge.svg?style=flat)](https://www.versioneye.com/user/projects/548225818674a4b5b90004dd)
5
+ [![Code Climate](https://codeclimate.com/github/BrandyMint/moysklad/badges/gpa.svg)](https://codeclimate.com/github/BrandyMint/moysklad)
4
6
 
5
- Отличительные черты:
7
+ * http://www.rubydoc.info/gems/moysklad
6
8
 
7
- * Модуль разработан согласно принципам SOLID. Легко расширяем.
8
-
9
- ## Возможности
9
+ ## Особенности
10
10
 
11
- * Легкое внесение изменений (добавление новых моделей и ресурсов)
12
- * Удобный доступ ко всем действиям с ресурсами.
13
- * Кеширование ресурса со всеми записями (используем ресурс как локальную базу)
14
- * Понятные исключения при ошибках с сетью.
11
+ * Модуль разработан согласно принципам SOLID. Легко расширяем.
12
+ * Все используемые сущности описаны и структурированы. Например [Good](lib/moysklad/entities/good.rb)
13
+ * Любые действия с ресурсами (Create, Read, Update, Delete, List).
14
+ * Виртуальные действия с ресурсами (`where`, `findWhere`)
15
+ * _Кеширование и предзагрузка_ ресурса со всеми записями (используем ресурс как локальную базу)
16
+ * Работа с нескольмими аккаунтами на склада одновременно (отсуствие глобальных переменных).
17
+ * Удобная работа с подресурсами (например справочником свойств товара)
18
+ * _Ассоциации_ между сущностями автоматически получают данные по API (`good.features`).
19
+ * [Client](lib/moysklad/client.rb) для прямого обращения к API в случае крайней необходимости.
15
20
 
16
21
  ## Установка
17
22
 
@@ -19,39 +24,48 @@
19
24
 
20
25
  gem 'moysklad'
21
26
 
22
-
23
27
  ## Использование
24
28
 
25
29
  Создаем благоприятное окружение для работы с API:
26
30
 
27
- > client = Moysklad::Client.new login:'ВАШ ЛОГИН', password:'ВАШ ПАРОЛЬ'
28
- > universe = Moysklad::Universe.new client: client
31
+ ```ruby
32
+ universe = Moysklad::Universe.build login:'ВАШ ЛОГИН', password:'ВАШ ПАРОЛЬ'
33
+ ```
29
34
 
30
35
  ### Список элементов.
31
36
 
32
- Например список товаров.
37
+ Например список товаров (`Good`).
33
38
 
34
- > universe.goods.list
35
- > => [Moysklad::Entities::Good, Moysklad::Entities::Good, ..]
39
+ ```ruby
40
+ universe.goods.list
41
+ # => [Moysklad::Entities::Good, Moysklad::Entities::Good, ..]
42
+ ```
36
43
 
37
44
  Обратите внимание, что список возвращается "как есть" и для работы с ним есть более удобные методы.
38
45
 
46
+ Параметры списка.
47
+
48
+ ```ruby
49
+ universe.stock.list slotUuid: uuid
50
+ ```
51
+
39
52
  Страница товаров:
40
53
 
41
- > page = universe.goods.page
42
- > => Moysklad::Entities::Page
54
+ ```ruby
55
+ page = universe.goods.page
56
+ # => Moysklad::Entities::Page
43
57
 
44
- > page.total
45
- > => 1280
58
+ page.total
59
+ # => 1280
46
60
 
47
- > page.count
48
- > => 1000
61
+ page.count
62
+ # => 1000
49
63
 
50
- > page.start
51
- > => 0
64
+ page.start
65
+ # => 0
52
66
 
53
- > page.items
54
- > =>[Moysklad::Entities::Good, ..]
67
+ # page.items
68
+ # =>[Moysklad::Entities::Good, ..]
55
69
 
56
70
  Есть очень удобная возможность автоматически загрузать ВСЕ товары с учетом пейджирования:
57
71
 
@@ -61,99 +75,198 @@
61
75
 
62
76
  > goods
63
77
  > => [Moysklad::Entities::Page]
64
-
78
+ ```
65
79
 
66
80
  ### Получить конкретный элемент
67
81
 
68
- > universe.goods.get $uuid
69
- > => [Moysklad::Entities::Good]
70
-
82
+ ```ruby
83
+ universe.goods.get $uuid
84
+ # => [Moysklad::Entities::Good]
85
+ ```
71
86
 
72
87
  ### Создаем элемент
73
88
 
74
89
  Например загрузка заказа покупателя:
75
90
 
76
- > co = Moysklad::Entities::CustomerOrder.new
77
- > co.vatIncluded = true
78
- > co.applicable = true
79
- > co.customerOrderPosition = [Moysklad::Entities::CustomerOrderPosition.new]
80
- >
81
- > created_order = universe.customer_orders.create co
82
- > => [Moysklad::Entities::Good]
83
- > created_order.uuid
84
- > => uuid нового заказа
91
+ ```
92
+ co = Moysklad::Entities::CustomerOrder.new
93
+ co.vatIncluded = true
94
+ co.applicable = true
95
+ [...]
96
+ co.customerOrderPosition = [Moysklad::Entities::CustomerOrderPosition.new]
97
+
98
+ created_order = universe.customer_orders.create co
99
+ # => [Moysklad::Entities::Good]
100
+
101
+ created_order.uuid
102
+ # => uuid нового заказа
103
+ ```
85
104
 
86
105
  ### Удаляем элемент
87
106
 
88
- > universe.goods.delete $uuid
107
+ ```ruby
108
+ universe.goods.delete $uuid
109
+ ```
89
110
 
90
- ### Кеширование
111
+ ### Кеширование и предзагрузка
91
112
 
92
113
  Одной из главных возможностей данного модуля является возможность работать с API как с базой данных,
93
114
  не выполняя запрос по получению каждого товара по-отдельности, и выдавать данные их кеша.
94
115
 
95
116
  Класический способ получить данные по товару делает GET запрос каждый раз:
96
117
 
97
- > > universe.goods.get $uuid
98
- > => Client: GET exchange/rest/ms/xml/Good/f24937e7-7ba1-11e4-90a2-8ecb000abf12 {}
99
- > => [Moysklad::Entities::Good]
118
+ ```ruby
119
+ universe.goods.get $uuid
120
+ # => Client: GET exchange/rest/ms/xml/Good/f24937e7-7ba1-11e4-90a2-8ecb000abf12 {}
121
+ # => [Moysklad::Entities::Good]
122
+ ```
100
123
 
101
124
  Продвинутый способ вытаскивает все данные сразу и в дальнейшем берет обьекты из кеша:
102
125
 
103
- > > universe.goods.find $uuid
104
- > => Client: GET exchange/rest/ms/xml/Good/list {:start=>0}
105
- > => Client: GET exchange/rest/ms/xml/Good/list {:start=>1000}
106
- > => [Moysklad::Entities::Good]
126
+ ```ruby
127
+ > universe.goods.find $uuid
128
+ # => Client: GET exchange/rest/ms/xml/Good/list {:start=>0}
129
+ # => Client: GET exchange/rest/ms/xml/Good/list {:start=>1000}
130
+ # => [Moysklad::Entities::Good]
131
+ ```
107
132
 
108
133
  И в следующий раз API уже не дергается:
109
134
 
110
- > > universe.goods.find $another_uuid
111
- > => [Moysklad::Entities::Good]
135
+ ```ruby
136
+ universe.goods.find $another_uuid
137
+ # => [Moysklad::Entities::Good]
138
+ ```
112
139
 
113
140
  Это позволяет экономить на прямых запросах к API и избавляет нас от блокирования моимскладом по ограничению количества запросов за еденицу времени.
114
141
 
115
142
 
116
- ### Список доступных ресутсов:
143
+ ## Поиск по фильтру
144
+
145
+ Возвращает список элементов отображенных по фильтру:
146
+
147
+ ```ruby
148
+ universe.features.where goodUuid: uuid
149
+ # => [Moysklad::Enities::Feature, Moysklad::Enities::Feature]
150
+ ```
151
+
152
+ Тоже самое, только возвращается первый элемент или nil:
153
+
154
+ ```ruby
155
+ universe.features.findWhere goodUuid: uuid
156
+ # => [Moysklad::Enities::Feature]
157
+ ```
117
158
 
118
- > universe.resources_list
119
- > => [:stock, :metadata, :custom_entity_metadata, :goods, :good_folders, :uoms, :countries,
159
+ ### Список доступных ресурсов:
160
+
161
+ ```ruby
162
+ universe.resources_list
163
+ # => [:stock, :metadata, :custom_entity_metadata, :goods, :good_folders, :uoms, :countries,
120
164
  :features, :custom_entities, :customer_orders, :warehouses, :companies,
121
165
  :consignments, :my_companies]
166
+ ```
122
167
 
168
+ ## Справочники и подресурсы
123
169
 
124
- ## Pull Requests
170
+ Доступ к Мойсклад устроен так, что некоторые справочники запрятаны в одной коллекции.
171
+ Например если вы хотите получить все виды свойств товаров, то это можно сделать следующим образом.
172
+
173
+ ```ruby
174
+ universe.metadata.subresource_by_name(:GoodFolder).all
175
+ # => [Moysklad::Entities::AttributeMetadata, Moysklad::Entities::AttributeMetadata]
176
+ ```
177
+
178
+ Или получить конкретное свойство:
125
179
 
126
- ### Добавление новых моделей и ресутсрв
180
+ ```ruby
181
+ universe.metadata.subresource_by_name(:GoodFolder).find uuid
182
+ # => Moysklad::Entities::AttributeMetadata
183
+ ```
127
184
 
128
- Если в API моего склада есть справочник, который еще не добавлен в этот модуль, можете сделать это сами следующим образом.
185
+ ## Автоматическая обработка ассоциаций (отношения)
129
186
 
130
- Например добавляем Country.
187
+ Нравятся `belongs_to` и `has_many` в рельсах? Тут есть почти тоже самое.
131
188
 
189
+ ```ruby
190
+ feature = universe.features.find uuid
191
+ feature.good
192
+ # Client: GET exchange/rest/ms/xml/Good/f24937e7-7ba1-11e4-90a2-8ecb000abf12 {}
193
+ # => [Moysklad::Entities::Good]
194
+ ```
195
+
196
+ Пример как получить все данные по товару, включая модификации, свойства и их характеристики:
197
+
198
+ ```ruby
199
+ good = universe.goods.find uuid
200
+ # Client: GET exchange/rest/ms/xml/Good/f24937e7-7ba1-11e4-90a2-8ecb000abf12 {}
201
+
202
+ good.features universe
203
+ # Client: GET exchange/rest/ms/xml/Feature/list {}
204
+ # => [Moysklad::Entities::Feature, ..]
205
+
206
+ attribute = good.attributes.first
207
+ # => [Moysklad::Entities::Attribute, ..]
208
+
209
+ attribute.is_dictionary?
210
+ # => true
211
+ ```
212
+
213
+ Получаем вид свойства:
214
+
215
+ ```ruby
216
+ attribute.metadata universe
217
+ # Client: GET exchange/rest/ms/xml/Metadata/list {}
218
+ # => [Moysklad::Entities::AttributeMetadata]
219
+ ```
220
+
221
+ Получаем описание пользовательского справочника к которому принадлежит свойства
222
+
223
+ ```ruby
224
+ dictionary = attribute.metadata(universe).dictionatyMetadata(universe)
225
+ # Client: GET exchange/rest/ms/xml/CustomEntityMetadata/uuid {}
226
+ # => [Moysklad::Entities::CustomEntityMetadata]
227
+ ```
228
+
229
+ Значения всех элементов пользовательского справочника:
230
+
231
+ ```ruby
232
+ dictionary.entities(universe)
233
+ # => [Moysklad::Entities::CustomEntity, ...]
234
+ ```
235
+
236
+ Подробнее смотри в исходниках сущностей.
237
+
238
+ ## Pull Requests
239
+
240
+ ### Добавление новых моделей и ресурсов.
241
+
242
+ На данный момен в библиотеку добавлено 60% справочников используемых в моемскладе. Я добавляю новые справочники по мере необходимости. Но вы можете это сделать и сами следующим образом.
243
+
244
+ Например добавляем `Country`.
132
245
 
133
246
  1. Добавляем в фикстуры пример выгрузки из API для тестирования и отладки:
134
247
 
135
- > MS_LOGON=логин MS_PASSWORD=пароль ./script/rest.sh Country list > ./spec/fixtures/Country_list.raw
248
+ MS_LOGON=логин MS_PASSWORD=пароль ./script/rest.sh Country list > ./spec/fixtures/Country_list.raw
136
249
 
137
250
  2. Создаем сущность на основе уже существующей, например good.rb
138
251
 
139
- > cp ./lib/moysklad/entities/good.rb ./lib/moysklad/entities/country.rb
252
+ cp ./lib/moysklad/entities/good.rb ./lib/moysklad/entities/country.rb
140
253
 
141
254
  3. Описываем свойства новой сущности Country.rb в терминах [nokogiri-happymapper](https://github.com/dam5s/happymapper)-а
142
255
 
143
- > vi ./lib/moysklad/entities/country.rb
256
+ vi ./lib/moysklad/entities/country.rb
144
257
 
145
258
  4. Добавляем сущность в requirements
146
259
 
147
- > vi ./lib/moysklad/entities.rb
260
+ vi ./lib/moysklad/entities.rb
148
261
 
149
262
  5. Содаем автоматический ресурс (имя ресурса во множественном числе)
150
263
 
151
- > vi ./lib/moysklad/resources.rb
264
+ vi ./lib/moysklad/resources.rb
152
265
 
153
266
  6. Делаем spec для сущности и для ресурса.
154
267
 
155
- > vi ./spec/lib/moysklad/resources/countries_spec.rb
156
- > vi ./spec/lib/moysklad/entities/country_spec.rb
268
+ > vi ./spec/lib/moysklad/resources/countries_spec.rb
269
+ > vi ./spec/lib/moysklad/entities/country_spec.rb
157
270
 
158
271
  7. Проверяем что тесты проходят.
159
272
 
@@ -161,13 +274,13 @@
161
274
 
162
275
  ## Тестирование
163
276
 
164
- > bundle exec guard
277
+ > bundle exec guard
165
278
 
166
279
  ## Полезняшки
167
280
 
168
281
  Скрипт для быстрого доступа к сервисам моего склада
169
282
 
170
- > MS_LOGON=логин MS_PASSWORD=пароль ./script/rest.sh Country list > ./spec/fixtures/Country_list.raw
283
+ > MS_LOGON=логин MS_PASSWORD=пароль ./script/rest.sh Country list > ./spec/fixtures/Country_list.raw
171
284
 
172
285
  ## Ссылочки
173
286
 
@@ -175,3 +288,7 @@
175
288
  * Документация для разработчииков https://support.moysklad.ru/hc/ru/sections/200561443-Разработчикам
176
289
 
177
290
  ## Присылайте пул-реквесты )
291
+
292
+ ## Авторство
293
+
294
+ * Данил Письменный (brandymint.ru)
@@ -11,14 +11,24 @@ module Moysklad::Entities
11
11
  attribute :entityValueUuid, String
12
12
 
13
13
  # Объект описывающий тип атритуба
14
+ #
15
+ # @return Moysklad::Entities::AttributeMetadata
16
+ #
14
17
  def metadata universe
15
- universe.metadata.subresource_by_name(:GoodFolder).find metadataUuid
18
+ universe.metadata.subresource_by_name(:GoodFolder).find metadataUuid
16
19
  end
17
20
 
21
+ # Название свойства, полученное из AttributeMetadata
22
+ #
23
+ # @return String
24
+ #
18
25
  def attributeName universe
19
26
  metadata(universe).name
20
27
  end
21
28
 
29
+ # Значение свойства согласно его типу
30
+ #
31
+ # @return [String | Moysklad::Entities::CustomEntity | Integer | Decimal ]
22
32
  def get_value universe
23
33
  md = metadata universe
24
34
  case md.attrType
@@ -28,6 +38,7 @@ module Moysklad::Entities
28
38
  valueText
29
39
  when 'STRING'
30
40
  valueString
41
+ # TODO Другие типы
31
42
  else
32
43
  raise "Не известный тип мета-аттрибута #{md.uuid}: #{md.attrType}"
33
44
  end
@@ -15,10 +15,21 @@ module Moysklad::Entities
15
15
  attribute :required, Boolean
16
16
  attribute :dictionaryMetadataUuid, String
17
17
 
18
+ def is_dictionary?
19
+ attrType == 'ID_CUSTOM'
20
+ end
21
+
22
+ # Если это свойство типа ID_CUSTOM, то возвращается пользовательский справочник
23
+ #
24
+ # @return Moysklad::Entities::CustomEntityMetadata
18
25
  def dictionatyMetadata universe
26
+ raise "Это свойства не типа справочник" unless dictionaryMetadataUuid
19
27
  universe.custom_entity_metadata.find dictionaryMetadataUuid
20
28
  end
21
29
 
30
+ # Справочник к которому принадлежит это ссвойство
31
+ #
32
+ # @return Moysklad::Entities::EmbeddedEntityMetadata
22
33
  def entityMetadata universe
23
34
  universe.metadata.find entityMetadataUuid
24
35
  end
@@ -1,6 +1,7 @@
1
1
  # https://online.moysklad.ru/exchange/rest/ms/xml/CustomEntityMetadata/list
2
2
  #
3
- # Пользовательские справочники
3
+ # Пользовательский справочник
4
+ #
4
5
  module Moysklad::Entities
5
6
  class CustomEntityMetadata < Base
6
7
  include CommonObject
@@ -11,5 +11,10 @@ module Moysklad::Entities
11
11
  has_many :attributes, Moysklad::Entities::Attribute
12
12
  has_many :barcodes, Moysklad::Entities::Barcode
13
13
 
14
+ def good universe
15
+ cache :good, universe do
16
+ universe.good.find goodUuid
17
+ end
18
+ end
14
19
  end
15
20
  end
@@ -21,7 +21,7 @@ class Moysklad::Resources::Base
21
21
 
22
22
  # Возвращает список элементов как есть
23
23
  #
24
- # @return Array[Moysklad::Entities::Base]
24
+ # @return [Array of Moysklad::Entities::Base]
25
25
  def list params={}
26
26
  parse client.get list_path, params
27
27
  end
@@ -51,9 +51,11 @@ class Moysklad::Resources::Base
51
51
  #
52
52
  # @param [Moysklad::Entities::Base]
53
53
  #
54
- # @return [Moysklad::Entities::Base] созданная и возвращенная с сервера сущность
54
+ # Возвращается созданная на сервере сущность
55
+ #
56
+ # @return [Moysklad::Entities::Base]
55
57
  def create model
56
- raise "Должна быть модель типа Moysklad::Entities::Base" unless model.is_a? Moysklad::Entities::Bae
58
+ raise "Должна быть модель типа Moysklad::Entities::Base" unless model.is_a? Moysklad::Entities::Base
57
59
  parse client.put create_path, prepare_resource(model)
58
60
  end
59
61
 
@@ -11,7 +11,7 @@ module Moysklad::Resources
11
11
 
12
12
  # Автоматически подгружает постранично данныез из API и возвращает их все сразу.
13
13
  #
14
- # @return Array[Moysklad::Entities::Base]
14
+ # @return [Array of Moysklad::Entities::Base]
15
15
  def all
16
16
  @cached_list || pull_list
17
17
  end
@@ -26,7 +26,7 @@ module Moysklad::Resources
26
26
 
27
27
  # Перечень uuid-ов всех элементов в ресуресе
28
28
  #
29
- # @return Array[uuid]
29
+ # @return [Array of uuids]
30
30
  def uuids
31
31
  index.keys
32
32
  end
@@ -1,8 +1,19 @@
1
1
  module Moysklad::Resources::WhereFilter
2
+
3
+ # Возвращает список элементов по переданному фильтру.
4
+ # Например:
5
+ # > universe.features.where goodUuid: uuid
6
+ #
7
+ # @return [Array of Moysklad::Entities::Base]
8
+ #
2
9
  def where filter
3
10
  values.select { |v| filtered? v, filter }
4
11
  end
5
12
 
13
+ # Возвращает первый найденный по фильтру элемент или
14
+ # nil
15
+ #
16
+ # @return Moysklad::Entities::Base || nil
6
17
  def findWhere filter
7
18
  where(filter).first
8
19
  end
@@ -1,17 +1,27 @@
1
1
  module Moysklad
2
2
  class Universe
3
3
  cattr_reader :resources_list
4
+ attr_reader :client
4
5
 
5
- def class_by_resource resource
6
- "Moysklad::Resources::#{resource.to_s.singularize.capitalize}".constantize
7
- end
8
-
6
+ # @param client[Moysklad::Client]
9
7
  def initialize client: nil
10
8
  raise "Должен быть client[Moysklad::Client]" unless client.is_a? Moysklad::Client
11
9
  @client = client
12
10
  @resources={}
13
11
  end
14
12
 
13
+ def self.client_class
14
+ Client
15
+ end
16
+
17
+ # Ленивое создание universe
18
+ #
19
+ # @param login
20
+ # @param password
21
+ def self.build login: nil, password: nil
22
+ new client: client_class.new(login: login, password: password)
23
+ end
24
+
15
25
  @@resources_list = []
16
26
  Moysklad::Resources.resources.each do |resource_klass|
17
27
  @@resources_list << resource_klass.pluralized_type.to_sym
@@ -20,10 +30,10 @@ module Moysklad
20
30
  end
21
31
  end
22
32
 
23
- private
33
+ def class_by_resource resource
34
+ "Moysklad::Resources::#{resource.to_s.singularize.capitalize}".constantize
35
+ end
24
36
 
25
- attr_reader :client
26
-
27
37
  end
28
38
 
29
39
  end
@@ -1,3 +1,3 @@
1
1
  module Moysklad
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -25,4 +25,20 @@ describe Moysklad::Universe do
25
25
  expect(subject.resources_list).to include(:features)
26
26
  end
27
27
 
28
+ describe '.build' do
29
+ let(:login) { 'alala' }
30
+ let(:password) { 'ulala' }
31
+
32
+ subject { described_class.build login: login, password: password }
33
+
34
+ it do
35
+ expect(subject).to be_a Moysklad::Universe
36
+ end
37
+
38
+ it do
39
+ expect(subject.client).to be_a Moysklad::Client
40
+ end
41
+
42
+ end
43
+
28
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moysklad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danil Pismenny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-04 00:00:00.000000000 Z
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler