class Crunchbase::Model::Entity
Attributes
type_name[R]
uuid[R]
Public Class Methods
new(json)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 10 def initialize(json) instance_variable_set('@type_name', json['type'] || nil) instance_variable_set('@uuid', json['uuid'] || nil) properties = json['properties'] || {} property_keys.each do |v| instance_variable_set("@#{v}", properties[v]) end date_keys.each do |v| instance_variable_set("@#{v}", properties[v].nil? ? nil : Date.parse(properties[v])) end instance_timestamps(properties) relationships = json['relationships'] return if relationships.nil? || relationship_lists.empty? setup_relationships_data!(relationships) end
Public Instance Methods
convert_date!(date)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 42 def convert_date!(date) return Time.parse(date) if date.is_a?(String) Time.at(date) rescue StandardError nil end
date_keys()
click to toggle source
# File lib/crunchbase/model/entity.rb, line 62 def date_keys [] end
fetch()
click to toggle source
# File lib/crunchbase/model/entity.rb, line 50 def fetch fetch_object = get_fetch_object return [] if fetch_object.empty? fetch_object[0].new Crunchbase::API.fetch(permalink, fetch_object[1]) end
instance_multi_relationship_objects(kclass, key, items)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 128 def instance_multi_relationship_objects(kclass, key, items) multi_items = [] items.map { |item| multi_items << kclass.new(item || nil) } instance_variable_set "@#{key}", multi_items instance_variable_set "@#{key}_total_items", multi_items.size end
instance_relationships_object(kclass, key, item)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 122 def instance_relationships_object(kclass, key, item) return unless item instance_variable_set "@#{key}", (kclass.new(item) || nil) end
instance_timestamps(properties)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 36 def instance_timestamps(properties) %w(created_at updated_at).each do |v| instance_variable_set("@#{v}", convert_date!(properties[v])) end end
one_to_many(kclass, key, list)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 111 def one_to_many(kclass, key, list) return unless list['items'].respond_to?(:each) set_variables(kclass, key, list['items']) instance_variable_set "@#{key}_total_items", list['paging']['total_items'] end
one_to_one(kclass, key, item)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 87 def one_to_one(kclass, key, item) return unless item result = special_relationship(kclass, item) instance_variable_set "@#{key}", result[:item] instance_variable_set "@#{key}_total_items", result[:count] end
parse_hash_items(kclass, key, list)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 81 def parse_hash_items(kclass, key, list) one_to_one(kclass, key, list) one_to_one(kclass, key, list['item']) if list['item'] one_to_many(kclass, key, list) if list['items'] end
property_keys()
click to toggle source
TODO: need to be implement
# File lib/crunchbase/model/entity.rb, line 58 def property_keys [] end
relationship_lists()
click to toggle source
# File lib/crunchbase/model/entity.rb, line 66 def relationship_lists {} end
set_relationships_object(kclass, key, list)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 70 def set_relationships_object(kclass, key, list) return if list.nil? || list.empty? return unless list if list.is_a?(Array) set_variables(kclass, key, list) elsif list.is_a?(Hash) parse_hash_items(kclass, key, list) end end
set_variables(kclass, key, items)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 118 def set_variables(kclass, key, items) instance_variable_set "@#{key}", items.inject([]) { |v, i| v << kclass.new(i) } end
setup_relationships_data!(relationships)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 30 def setup_relationships_data!(relationships) relationship_lists.each do |key, kclass| set_relationships_object(kclass, key, relationships[key]) end end
special_relationship(kclass, item)
click to toggle source
{
"cardinality"=>"OneToOne", "paging"=>{"total_items"=>0, "first_page_url"=>"https://api.crunchbase.com/v3.1/organizations/facebook/acquired_by", "sort_order"=>"not_ordered"
}
# File lib/crunchbase/model/entity.rb, line 101 def special_relationship(kclass, item) return { item: nil, count: 0 } if verify_item?(item) { item: (kclass.new(item) || nil), count: (item ? 1 : 0) } end
verify_item?(item)
click to toggle source
# File lib/crunchbase/model/entity.rb, line 107 def verify_item?(item) item['cardinality'] == 'OneToOne' && (item['paging']['total_items']).zero? end