Module: MercadoPublicoCl::Resources::Base::ClassMethods

Included in:
PublicAgency, PurchaseOrder, Supplier, Tender
Defined in:
lib/mercado_publico_cl/resources/base.rb

Instance Method Summary collapse

Instance Method Details

#clientObject



10
11
12
# File 'lib/mercado_publico_cl/resources/base.rb', line 10

def client
  MercadoPublicoCl.client
end

#detail_payload(item) ⇒ Object



42
43
44
# File 'lib/mercado_publico_cl/resources/base.rb', line 42

def detail_payload(item)
  item
end

#extract_list(body) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/mercado_publico_cl/resources/base.rb', line 33

def extract_list(body)
  unless body.is_a?(Hash)
    raise MercadoPublicoCl::ApiError.new("unexpected response shape: #{body.class}", status_code: nil)
  end

  list = body[list_key]
  list.is_a?(Hash) ? [list] : Array(list)
end

#fetch_list(params) ⇒ Object



18
19
20
21
# File 'lib/mercado_publico_cl/resources/base.rb', line 18

def fetch_list(params)
  body = client.get(endpoint, params)
  extract_list(body).map { |raw| from_payload(detail_payload(raw)) }
end

#fetch_single(params) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/mercado_publico_cl/resources/base.rb', line 23

def fetch_single(params)
  body = client.get(endpoint, params)
  item = extract_list(body).first
  return nil if item.nil?

  from_payload(detail_payload(item))
rescue MercadoPublicoCl::NotFoundError
  nil
end

#list_keyObject



14
15
16
# File 'lib/mercado_publico_cl/resources/base.rb', line 14

def list_key
  "Listado"
end