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.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 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
|
Instance Attribute Details
#type_name ⇒ Object
Returns the value of attribute type_name.
8
9
10
|
# File 'lib/crunchbase/model/entity.rb', line 8
def type_name
@type_name
end
|
#uuid ⇒ Object
Returns the value of attribute uuid.
8
9
10
|
# File 'lib/crunchbase/model/entity.rb', line 8
def uuid
@uuid
end
|
Instance Method Details
#convert_date!(date) ⇒ Object
42
43
44
45
46
47
48
|
# 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 ⇒ Object
62
63
64
|
# File 'lib/crunchbase/model/entity.rb', line 62
def date_keys
[]
end
|
#fetch ⇒ Object
50
51
52
53
54
55
|
# 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) ⇒ Object
128
129
130
131
132
133
134
|
# 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) ⇒ Object
122
123
124
125
126
|
# 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) ⇒ Object
36
37
38
39
40
|
# 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) ⇒ Object
111
112
113
114
115
116
|
# 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) ⇒ Object
87
88
89
90
91
92
93
|
# 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) ⇒ Object
81
82
83
84
85
|
# 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 ⇒ Object
TODO: need to be implement
58
59
60
|
# File 'lib/crunchbase/model/entity.rb', line 58
def property_keys
[]
end
|
#relationship_lists ⇒ Object
66
67
68
|
# File 'lib/crunchbase/model/entity.rb', line 66
def relationship_lists
{}
end
|
#set_relationships_object(kclass, key, list) ⇒ Object
70
71
72
73
74
75
76
77
78
79
|
# 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) ⇒ Object
118
119
120
|
# 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) ⇒ Object
30
31
32
33
34
|
# 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) ⇒ Object
"cardinality"=>"OneToOne",
"paging"=>{"total_items"=>0,
"first_page_url"=>"https://api.crunchbase.com/v3.1/organizations/facebook/acquired_by",
"sort_order"=>"not_ordered"
101
102
103
104
105
|
# 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) ⇒ Boolean
107
108
109
|
# File 'lib/crunchbase/model/entity.rb', line 107
def verify_item?(item)
item['cardinality'] == 'OneToOne' && (item['paging']['total_items']).zero?
end
|