Class: Crunchbase::Model::Entity
- Inherits:
-
Object
- Object
- Crunchbase::Model::Entity
show all
- Extended by:
- Request::Client
- Defined in:
- lib/crunchbase/model/entity.rb
Direct Known Subclasses
AcquiredBy, Acquisition, Address, BatchSearch, Category, Degree, Error, Fund, FundRaise, FundingRound, Image, Investment, Investor, Ipo, Job, Location, New, Organization, OrganizationSummary, OwnedBy, Person, PersonSummary, Product, ProductSummary, Search, SearchResult, SimpleOrganization, Video, Website
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#convert_date!(date) ⇒ Object
-
#date_keys ⇒ Object
-
#fetch ⇒ Object
-
#initialize(json) ⇒ Entity
constructor
A new instance of Entity.
-
#instance_multi_relationship_objects(kclass, key, items) ⇒ Object
-
#instance_relationships_object(kclass, key, item) ⇒ Object
-
#instance_timestamps(properties) ⇒ Object
-
#one_to_many(kclass, key, list) ⇒ Object
-
#one_to_one(kclass, key, item) ⇒ Object
-
#parse_hash_items(kclass, key, list) ⇒ Object
-
#property_keys ⇒ Object
TODO: need to be implement.
-
#relationship_lists ⇒ Object
-
#set_relationships_object(kclass, key, list) ⇒ Object
-
#set_variables(kclass, key, items) ⇒ Object
-
#setup_relationships_data!(relationships) ⇒ Object
-
#special_relationship(kclass, item) ⇒ Object
-
#verify_item?(item) ⇒ Boolean
api, array_from_list, funding_rounds_lists, get, kclass_name, list, organization_lists, parsing_from_list, person_lists, total_items_from_list
Constructor Details
#initialize(json) ⇒ Entity
Returns a new instance of Entity.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/crunchbase/model/entity.rb', line 11
def initialize(json)
instance_variable_set('@type_name', json['type'] || nil)
instance_variable_set('@uuid', json['uuid'] || nil)
properties = json['properties'] || {}
property_keys.each { |v| instance_variable_set("@#{v}", properties[v]) }
date_keys.each { |v| instance_variable_set("@#{v}", properties[v].nil? ? nil : Date.parse(properties[v])) }
instance_timestamps(properties)
relationships = json['relationships']
return if relationships.nil? || relationship_lists.empty?
setup_relationships_data!(relationships)
end
|
Instance Attribute Details
#type_name ⇒ Object
Returns the value of attribute type_name.
9
10
11
|
# File 'lib/crunchbase/model/entity.rb', line 9
def type_name
@type_name
end
|
#uuid ⇒ Object
Returns the value of attribute uuid.
9
10
11
|
# File 'lib/crunchbase/model/entity.rb', line 9
def uuid
@uuid
end
|
Instance Method Details
#convert_date!(date) ⇒ Object
39
40
41
42
43
44
45
|
# File 'lib/crunchbase/model/entity.rb', line 39
def convert_date!(date)
return Time.parse(date) if date.is_a?(String)
Time.at(date)
rescue
nil
end
|
#date_keys ⇒ Object
59
60
61
|
# File 'lib/crunchbase/model/entity.rb', line 59
def date_keys
[]
end
|
#fetch ⇒ Object
47
48
49
50
51
52
|
# File 'lib/crunchbase/model/entity.rb', line 47
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) ⇒ Object
125
126
127
128
129
130
131
|
# File 'lib/crunchbase/model/entity.rb', line 125
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) ⇒ Object
119
120
121
122
123
|
# File 'lib/crunchbase/model/entity.rb', line 119
def instance_relationships_object(kclass, key, item)
return unless item
instance_variable_set "@#{key}", (kclass.new(item) || nil)
end
|
#instance_timestamps(properties) ⇒ Object
33
34
35
36
37
|
# File 'lib/crunchbase/model/entity.rb', line 33
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) ⇒ Object
108
109
110
111
112
113
|
# File 'lib/crunchbase/model/entity.rb', line 108
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) ⇒ Object
84
85
86
87
88
89
90
|
# File 'lib/crunchbase/model/entity.rb', line 84
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) ⇒ Object
78
79
80
81
82
|
# File 'lib/crunchbase/model/entity.rb', line 78
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 ⇒ Object
TODO: need to be implement
55
56
57
|
# File 'lib/crunchbase/model/entity.rb', line 55
def property_keys
[]
end
|
#relationship_lists ⇒ Object
63
64
65
|
# File 'lib/crunchbase/model/entity.rb', line 63
def relationship_lists
{ }
end
|
#set_relationships_object(kclass, key, list) ⇒ Object
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/crunchbase/model/entity.rb', line 67
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) ⇒ Object
115
116
117
|
# File 'lib/crunchbase/model/entity.rb', line 115
def set_variables(kclass, key, items)
instance_variable_set "@#{key}", items.inject([]) { |v, i| v << kclass.new(i) }
end
|
#setup_relationships_data!(relationships) ⇒ Object
27
28
29
30
31
|
# File 'lib/crunchbase/model/entity.rb', line 27
def setup_relationships_data!(relationships)
relationship_lists.each do |key, kclass|
set_relationships_object(kclass, key, relationships[key])
end
end
|
#special_relationship(kclass, item) ⇒ Object
"cardinality"=>"OneToOne",
"paging"=>{"total_items"=>0,
"first_page_url"=>"https://api.crunchbase.com/v3.1/organizations/facebook/acquired_by",
"sort_order"=>"not_ordered"
98
99
100
101
102
|
# File 'lib/crunchbase/model/entity.rb', line 98
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) ⇒ Boolean
104
105
106
|
# File 'lib/crunchbase/model/entity.rb', line 104
def verify_item?(item)
item['cardinality'] == 'OneToOne' && (item['paging']['total_items']).zero?
end
|