lib/crunchbase/entities/client.rb in crunchbase4-0.1.4 vs lib/crunchbase/entities/client.rb in crunchbase4-0.1.5

- old
+ new

@@ -4,11 +4,11 @@ require_relative '../utilities/cb_model' module Crunchbase # Whole entities endpoints module Entities - # Send request for entities endpoints + # using Crunchbase's Entity Lookup API endpoints class Client include ::Crunchbase::Utilities::Request include ::Crunchbase::Utilities::CbModel ROOT_LIST = 'entities' @@ -19,39 +19,47 @@ end # Will include all attribute from API document def fetch cbobject.parse_response(entity( - root_uri, + entity_request_uri, field_ids: cbobject.field_ids.join(',') )) end # Only include a part basis fields of endpoint def fetch_cards(card_names = []) cbobject.parse_response(entity( - root_uri, + entity_request_uri, field_ids: cbobject.basis_fields.join(','), cards: (cbobject.full_cards & card_names).join(',') ), cbobject.basis_fields, card_names) end - def cards(card_id) + # Auto combine the card num field to request field_ids + # + # Example: if card_id is investors, will auto add num_investors + def cards(card_id, **args) raise Crunchbase::Error, 'Invalid card_id' unless cbobject.full_cards.include?(card_id) + field_ids = cbobject.basis_fields.concat(cbobject.card_num_field(card_id)) + + request_args = args.merge( + field_ids: field_ids.join(','), + card_field_ids: cbobject.model_mappings[card_id].new.field_ids.join(',') + ) cbobject.parse_response(entity( - root_uri(name: __method__, id: card_id), - field_ids: cbobject.basis_fields.join(','), - card_field_ids: cbobject.model_mappings[card_id].new.field_ids.join(',') - ), cbobject.basis_fields, [card_id]) + entity_request_uri(name: __method__, card_id: card_id), + request_args + ), field_ids, [card_id]) end private - def root_uri(args = {}) + def entity_request_uri(**args) [ ROOT_LIST, kclass_name::RESOURCE_LIST, - @entity_id, args[:name], args[:id] + @entity_id, args[:name], args[:card_id] ].compact.join('/') end end end end