Class: FocusNfe::Modelos::Pagina

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/focus_nfe/modelos/pagina.rb

Overview

Coleção paginada de uma resposta de listagem. Encapsula o corpo (Array de Hashes crus) e os cabeçalhos de sincronização incremental, expondo os itens de forma enumerável. Itens permanecem como Hash — modelos leves nas auxiliares/recebidas, conforme a arquitetura.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response:) ⇒ Pagina

Returns a new instance of Pagina.

Parameters:



33
34
35
36
37
38
39
# File 'lib/focus_nfe/modelos/pagina.rb', line 33

def initialize(response:)
  @response = response
  @itens = response.body.is_a?(Array) ? response.body : []
  @total = response.headers["X-Total-Count"]&.to_i
  @versao_maxima = response.headers["X-Max-Version"]&.to_i
  freeze
end

Instance Attribute Details

#itensArray (readonly)

Returns itens da página (corpo cru da resposta).

Returns:

  • (Array)

    itens da página (corpo cru da resposta)



16
17
18
# File 'lib/focus_nfe/modelos/pagina.rb', line 16

def itens
  @itens
end

#responseFocusNfe::HTTP::Response (readonly)

Returns resposta original da listagem.

Returns:



13
14
15
# File 'lib/focus_nfe/modelos/pagina.rb', line 13

def response
  @response
end

#totalInteger? (readonly)

Returns total de registros disponíveis (cabeçalho X-Total-Count).

Returns:

  • (Integer, nil)

    total de registros disponíveis (cabeçalho X-Total-Count)



19
20
21
# File 'lib/focus_nfe/modelos/pagina.rb', line 19

def total
  @total
end

#versao_maximaInteger? (readonly)

Returns maior versão presente (cabeçalho X-Max-Version), para sincronização incremental.

Returns:

  • (Integer, nil)

    maior versão presente (cabeçalho X-Max-Version), para sincronização incremental



22
23
24
# File 'lib/focus_nfe/modelos/pagina.rb', line 22

def versao_maxima
  @versao_maxima
end

Class Method Details

.from_response(response) ⇒ FocusNfe::Modelos::Pagina

Constrói uma FocusNfe::Modelos::Pagina a partir de uma HTTP::Response de listagem.

Parameters:

Returns:



28
29
30
# File 'lib/focus_nfe/modelos/pagina.rb', line 28

def self.from_response(response)
  new(response: response)
end

Instance Method Details

#each {|item| ... } ⇒ self, Enumerator Also known as: cada

Itera os itens da página.

Yield Parameters:

  • item (Object)

    item cru da listagem

Returns:

  • (self, Enumerator)

    self quando há bloco; um Enumerator caso contrário



45
46
47
48
49
50
# File 'lib/focus_nfe/modelos/pagina.rb', line 45

def each(&)
  return to_enum(:each) unless block_given?

  itens.each(&)
  self
end