Module: MercadoPublicoCl::Resources::Base::ClassMethods
- Included in:
- PublicAgency, PurchaseOrder, Supplier, Tender
- Defined in:
- lib/mercado_publico_cl/resources/base.rb
Instance Method Summary collapse
- #client ⇒ Object
- #detail_payload(item) ⇒ Object
- #extract_list(body) ⇒ Object
- #fetch_list(params) ⇒ Object
- #fetch_single(params) ⇒ Object
- #list_key ⇒ Object
Instance Method Details
#client ⇒ Object
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_key ⇒ Object
14 15 16 |
# File 'lib/mercado_publico_cl/resources/base.rb', line 14 def list_key "Listado" end |