crunchbase4 0.1.3 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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