Class: Apress::Moysklad::Readers::Assortment

Inherits:
Object
  • Object
show all
Defined in:
lib/apress/moysklad/readers/assortment.rb

Overview

Сервис загрузки ассортимента из акаунта МойСклад

Examples:

reader = Apress::Moysklad::Readers::Assortment.new('login', 'password').each_row { |row| puts row }

Constant Summary collapse

RETRY_ATTEMPTS =
5
RETRY_CODES =
[500, 502, 503, 504, 1999].freeze
ROWS_BATCH =
100

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Assortment



26
27
28
29
30
31
# File 'lib/apress/moysklad/readers/assortment.rb', line 26

def initialize(options)
   = options.fetch(:login)
  password = options.fetch(:password)

  @client = Api::Client.new(, password)
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



24
25
26
# File 'lib/apress/moysklad/readers/assortment.rb', line 24

def client
  @client
end

Class Method Details

.allowed_optionsObject



19
20
21
# File 'lib/apress/moysklad/readers/assortment.rb', line 19

def allowed_options
  i[ password]
end

Instance Method Details

#each_rowObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/apress/moysklad/readers/assortment.rb', line 33

def each_row
  offset = 0
  presenter = Presenters::Assortment.new(client)

  loop do
    data = with_retry do
      client.get(:assortment, limit: ROWS_BATCH, offset: offset, scope: :product, archived: :All)
    end

    check_rows_size! data, offset

    data[:rows].each { |row| yield presenter.expose(row) }

    break if (offset += ROWS_BATCH) >= data[:meta][:size]
  end
end