crunchbase4 0.1.3 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -33,33 +33,18 @@ module Crunchbase
33
33
  # query: keyword,
34
34
  # collection_ids: 'organizations'
35
35
  # }
36
- def autocomplete_organizations(keyword)
37
- autocompletes(wrapper_autocompletes_data(keyword, 'organizations'))
38
- end
39
-
40
- def autocomplete_people(keyword)
41
- autocompletes(wrapper_autocompletes_data(keyword, 'people'))
42
- end
43
-
44
- def autocomplete_funding_rounds(keyword)
45
- autocompletes(wrapper_autocompletes_data(keyword, 'funding_rounds'))
46
- end
47
-
48
- def autocomplete_press_references(keyword)
49
- autocompletes(wrapper_autocompletes_data(keyword, 'press_references'))
36
+ def autocomplete(keyword, **args)
37
+ crunchbase_autocompletes(wrapper_autocompletes_data(keyword, args))
50
38
  end
51
39
 
52
40
  private
53
41
 
54
- def autocompletes(raw_data)
42
+ def crunchbase_autocompletes(raw_data)
55
43
  Crunchbase::Autocompletes::Client.new(raw_data).autocompletes
56
44
  end
57
45
 
58
- def wrapper_autocompletes_data(keyword, collection_ids)
59
- {
60
- query: keyword,
61
- collection_ids: collection_ids
62
- }
46
+ def wrapper_autocompletes_data(keyword, **args)
47
+ { query: keyword }.merge(args)
63
48
  end
64
49
  end
65
50
  end
@@ -33,30 +33,14 @@ module Crunchbase
33
33
  # deleted_at_order: string
34
34
  # Direction of sorting by deleted_at property
35
35
  # Available values : asc, desc
36
- def deleted_organizations(args = {})
37
- deleted_entities(wrapper_deleted_entities_data(args, 'organizations'))
38
- end
39
-
40
- def deleted_people(args = {})
41
- deleted_entities(wrapper_deleted_entities_data(args, 'people'))
42
- end
43
-
44
- def deleted_funding_rounds(args = {})
45
- deleted_entities(wrapper_deleted_entities_data(args, 'funding_rounds'))
46
- end
47
-
48
- def deleted_press_references(args = {})
49
- deleted_entities(wrapper_deleted_entities_data(args, 'press_references'))
36
+ def deleted_entities(**args)
37
+ crunchbase_deleted_entities(args)
50
38
  end
51
39
 
52
40
  private
53
41
 
54
- def deleted_entities(raw_data)
55
- Crunchbase::DeletedEntities::Client.new(raw_data).deleted_entities
56
- end
57
-
58
- def wrapper_deleted_entities_data(args, collection_ids = nil)
59
- args.merge!(collection_ids: collection_ids)
42
+ def crunchbase_deleted_entities(args)
43
+ Crunchbase::DeletedEntities::Client.new(args).deleted_entities
60
44
  end
61
45
  end
62
46
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../errors'
4
+
3
5
  module Crunchbase
4
6
  # Utilities
5
7
  module Utilities
@@ -15,8 +17,8 @@ module Crunchbase
15
17
  # limit: Number of rows to return. Default is 100, min is 1, max is 100.
16
18
 
17
19
  # Lookup an Organization or single card
18
- def organization(entity_id, card_id: nil)
19
- lookup_for('organization', entity_id, card_id)
20
+ def organization(entity_id, **card_args)
21
+ lookup_for('organization', entity_id, card_args)
20
22
  end
21
23
 
22
24
  # Lookup Organization's all cards
@@ -25,8 +27,8 @@ module Crunchbase
25
27
  end
26
28
 
27
29
  # Lookup a Person or single card
28
- def person(entity_id, card_id: nil)
29
- lookup_for('person', entity_id, card_id)
30
+ def person(entity_id, **card_args)
31
+ lookup_for('person', entity_id, card_args)
30
32
  end
31
33
 
32
34
  # Lookup Person's all cards
@@ -35,8 +37,8 @@ module Crunchbase
35
37
  end
36
38
 
37
39
  # Lookup a Funding Round or single card
38
- def funding_round(entity_id, card_id: nil)
39
- lookup_for('funding_round', entity_id, card_id)
40
+ def funding_round(entity_id, **card_args)
41
+ lookup_for('funding_round', entity_id, card_args)
40
42
  end
41
43
 
42
44
  # Lookup Funding Round's all cards
@@ -45,8 +47,8 @@ module Crunchbase
45
47
  end
46
48
 
47
49
  # Lookup an Acquisition or Single card
48
- def acquisition(entity_id, card_id: nil)
49
- lookup_for('acquisition', entity_id, card_id)
50
+ def acquisition(entity_id, **card_args)
51
+ lookup_for('acquisition', entity_id, card_args)
50
52
  end
51
53
 
52
54
  # Lookup Acquisition's all card
@@ -55,8 +57,8 @@ module Crunchbase
55
57
  end
56
58
 
57
59
  # Lookup an Investment or Single card
58
- def investment(entity_id, card_id: nil)
59
- lookup_for('investment', entity_id, card_id)
60
+ def investment(entity_id, **card_args)
61
+ lookup_for('investment', entity_id, card_args)
60
62
  end
61
63
 
62
64
  # Lookup Investment's all card
@@ -65,8 +67,8 @@ module Crunchbase
65
67
  end
66
68
 
67
69
  # Lookup an PressReference or Single card
68
- def press_reference(entity_id, card_id: nil)
69
- lookup_for('press_reference', entity_id, card_id)
70
+ def press_reference(entity_id, **card_args)
71
+ lookup_for('press_reference', entity_id, card_args)
70
72
  end
71
73
 
72
74
  # Lookup PressReference's all card
@@ -75,8 +77,8 @@ module Crunchbase
75
77
  end
76
78
 
77
79
  # Lookup an Ipo or Single card
78
- def ipo(entity_id, card_id: nil)
79
- lookup_for('ipo', entity_id, card_id)
80
+ def ipo(entity_id, **card_args)
81
+ lookup_for('ipo', entity_id, card_args)
80
82
  end
81
83
 
82
84
  # Lookup Ipo's all card
@@ -84,17 +86,39 @@ module Crunchbase
84
86
  entities('ipo', entity_id).fetch_cards(cards)
85
87
  end
86
88
 
89
+ # Lookup an fund or Single card
90
+ def fund(entity_id, **card_args)
91
+ lookup_for('fund', entity_id, card_args)
92
+ end
93
+
94
+ # Lookup fund's all card
95
+ def fund_cards(entity_id, cards: [])
96
+ entities('fund', entity_id).fetch_cards(cards)
97
+ end
98
+
99
+ # Lookup an fund or Single card
100
+ def ownership(entity_id, **card_args)
101
+ lookup_for('ownership', entity_id, card_args)
102
+ end
103
+
104
+ # Lookup fund's all card
105
+ def ownership_cards(entity_id, cards: [])
106
+ entities('ownership', entity_id).fetch_cards(cards)
107
+ end
108
+
87
109
  private
88
110
 
89
111
  def entities(entity_type, entity_id)
90
112
  Crunchbase::Entities::Client.new(entity_id, entity_type)
91
113
  end
92
114
 
93
- def lookup_for(entity_type, entity_id, card_id)
115
+ def lookup_for(entity_type, entity_id, **card_args)
94
116
  kobject = entities(entity_type, entity_id)
117
+
118
+ card_id = card_args&.delete(:card_id)
95
119
  return kobject.fetch if card_id.nil?
96
120
 
97
- kobject.cards(card_id)
121
+ kobject.cards(card_id, card_args)
98
122
  end
99
123
  end
100
124
  end
@@ -9,7 +9,11 @@ require_relative '../errors'
9
9
  module Crunchbase
10
10
  # Utilities
11
11
  module Utilities
12
- # API Request
12
+ # Key Reminder
13
+ #
14
+ # entity_id must be provided in the request
15
+ # entity_id can be the uuid or the permalink of the entity
16
+ # you can pass your API key in the request's header if you do not want to pass the API key in the URL
13
17
  module Request
14
18
  module_function
15
19
 
@@ -56,7 +60,7 @@ module Crunchbase
56
60
 
57
61
  return response.body if response.status == 200
58
62
 
59
- raise Error, response.body['error']
63
+ raise Error, response.status == 400 ? response.body[0]['message'] : response.body['error']
60
64
  end
61
65
 
62
66
  def debug_mode?
@@ -52,15 +52,37 @@ module Crunchbase
52
52
  %w[identifier]
53
53
  end
54
54
 
55
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
55
56
  def field_value(name, data)
56
57
  value = data.dig(name)
57
58
 
58
59
  return value if value.nil? || value.is_a?(String)
59
- return value.collect { |e| e.dig('value') } if value.is_a?(Array) && value[0].is_a?(Hash) && value[0].keys.include?('value')
60
+ return parse_items(value, name) if value.is_a?(Array) && value[0].is_a?(Hash) && value[0].keys.include?('value')
61
+ return value.dig('value_usd') if value.is_a?(Hash) && value.keys.include?('value_usd')
60
62
  return value.dig('value') if value.is_a?(Hash) && value.keys.include?('value')
61
63
 
62
64
  value
63
65
  end
66
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
67
+
68
+ def parse_items(items, field_name)
69
+ return items.collect { |e| e.dig('value') } unless field_name == 'activity_entities'
70
+
71
+ # Sepcial case for activity_entities
72
+ items.each_with_object([]) do |item, objects|
73
+ card_model = case item['entity_def_id']
74
+ when 'person' then ::Crunchbase::Models::Person
75
+ when 'organization' then ::Crunchbase::Models::Organization
76
+ end
77
+ # Alias: value is name
78
+ item['name'] ||= item['value']
79
+
80
+ next if card_model.nil?
81
+
82
+ new_card_instance = card_model.new
83
+ objects << dynamic_attributes(new_card_instance, new_card_instance.basis_fields, item)
84
+ end
85
+ end
64
86
  end
65
87
  end
66
88
  end
@@ -142,7 +142,7 @@ module Crunchbase
142
142
  'online_and_on_campus' => 'Online and On Campus'
143
143
  }.freeze
144
144
 
145
- SCHOOL_METHODS = {
145
+ SCHOOL_PROGRAMS = {
146
146
  'bootcamp' => 'Bootcamp',
147
147
  'community_college' => 'Community College',
148
148
  'four_year_university' => 'Four Year University',
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Crunchbase
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crunchbase4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Encore Shao
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-09 00:00:00.000000000 Z
11
+ date: 2021-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -141,17 +141,24 @@ files:
141
141
  - lib/crunchbase/errors.rb
142
142
  - lib/crunchbase/models.rb
143
143
  - lib/crunchbase/models/acquisition.rb
144
+ - lib/crunchbase/models/address.rb
144
145
  - lib/crunchbase/models/autocomplete_entity.rb
145
146
  - lib/crunchbase/models/category.rb
146
147
  - lib/crunchbase/models/category_group.rb
148
+ - lib/crunchbase/models/concerns/entity.rb
149
+ - lib/crunchbase/models/concerns/mappings.rb
147
150
  - lib/crunchbase/models/deleted_entity.rb
148
- - lib/crunchbase/models/entity.rb
151
+ - lib/crunchbase/models/event_appearance.rb
152
+ - lib/crunchbase/models/fund.rb
149
153
  - lib/crunchbase/models/funding_round.rb
150
154
  - lib/crunchbase/models/investment.rb
151
155
  - lib/crunchbase/models/ipo.rb
156
+ - lib/crunchbase/models/job.rb
152
157
  - lib/crunchbase/models/organization.rb
158
+ - lib/crunchbase/models/ownership.rb
153
159
  - lib/crunchbase/models/person.rb
154
160
  - lib/crunchbase/models/press_reference.rb
161
+ - lib/crunchbase/models/principal.rb
155
162
  - lib/crunchbase/searches.rb
156
163
  - lib/crunchbase/searches/client.rb
157
164
  - lib/crunchbase/utilities.rb
@@ -172,7 +179,7 @@ metadata:
172
179
  allowed_push_host: https://rubygems.org
173
180
  homepage_uri: https://github.com/ekohe/crunchbase4
174
181
  source_code_uri: https://github.com/ekohe/crunchbase4
175
- changelog_uri: https://github.com/ekohe/crunchbase4/CHANGELOG.md
182
+ changelog_uri: https://github.com/ekohe/crunchbase4/blob/master/CHANGELOG.md
176
183
  post_install_message: Thanks for installing!
177
184
  rdoc_options: []
178
185
  require_paths:
@@ -188,8 +195,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
195
  - !ruby/object:Gem::Version
189
196
  version: '0'
190
197
  requirements: []
191
- rubygems_version: 3.0.3
192
- signing_key:
198
+ rubygems_version: 3.1.2
199
+ signing_key:
193
200
  specification_version: 4
194
201
  summary: Crunchbase is a ruby wrapper base on Crunchbase V4 API
195
202
  test_files: []
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../utilities/response'
4
-
5
- module Crunchbase
6
- # Get the Organization data from API
7
- module Models
8
- # Root
9
- class Entity
10
- include ::Crunchbase::Utilities::Response
11
-
12
- def fields
13
- field_ids.map(&:to_sym)
14
- end
15
-
16
- def parse_response(response, request_field_ids = [], cards = [])
17
- extract_fields = (request_field_ids.empty? ? field_ids : request_field_ids)
18
-
19
- dynamic_attributes(self, extract_fields, response.dig('properties'))
20
- setup_relationships(self, cards, response.dig('cards'))
21
- self
22
- end
23
-
24
- def setup_relationships(object, request_card_ids, response_cards)
25
- request_card_ids.each do |card_id|
26
- card_data = response_cards.dig(card_id)
27
- next if card_data.nil? || card_data.empty?
28
-
29
- card_model = card_model_mappings[card_id]
30
- card_objects = if card_data.is_a?(Array)
31
- card_data.each_with_object([]) do |data, objects|
32
- new_card_instance = card_model.new
33
- objects << dynamic_attributes(new_card_instance, new_card_instance.basis_fields, data)
34
- end
35
- else
36
- dynamic_attributes(card_model.new, extract_fields, data)
37
- end
38
-
39
- dynamic_define_method(object, card_id, card_objects)
40
- end
41
- end
42
-
43
- def as_json
44
- fields.each_with_object({}) { |item, hash| hash[item] = send(item) }
45
- end
46
-
47
- def card_model_mappings
48
- {
49
- 'investments' => Crunchbase::Models::Investment,
50
- 'raised_investments' => Crunchbase::Models::Investment,
51
- # 'participated_funds' => Crunchbase::Models::Fund,
52
- 'child_organizations' => Crunchbase::Models::Organization,
53
- 'participated_investments' => Crunchbase::Models::Investment,
54
- # 'investors' => Crunchbase::Models::Investor,
55
- 'parent_organization' => Crunchbase::Models::Organization,
56
- 'raised_funding_rounds' => Crunchbase::Models::FundingRound,
57
- 'ipos' => Crunchbase::Models::Ipo,
58
- # 'event_appearances' => Crunchbase::Models::EventAppearance,
59
- # 'raised_funds' => Crunchbase::Models::Fund,
60
- 'acquiree_acquisitions' => Crunchbase::Models::Acquisition,
61
- # 'parent_ownership' => Crunchbase::Models::Ownership,
62
- # 'jobs' => Crunchbase::Models::Job,
63
- # 'founders' => Crunchbase::Models::Founder,
64
- # 'child_ownerships' => Crunchbase::Models::Ownership,
65
- 'participated_funding_rounds' => Crunchbase::Models::FundingRound,
66
- 'press_references' => Crunchbase::Models::PressReference
67
- # 'headquarters_address' => Crunchbase::Models::Address,
68
- }
69
- end
70
- end
71
- end
72
- end