crunchbase4 0.1.4 → 0.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41773106ffa4379736f02219d7c5cc751f2115494b987d81b71757db0ffb2d7c
4
- data.tar.gz: 83a8d8f993df099b353f55296f5e86b1d0f75274f300835a6de17fa7a48b5ef5
3
+ metadata.gz: 84f43d773473d40462a4eead8f4548aaa15eb10b2c5dff849b50d07f579fddf5
4
+ data.tar.gz: 7f34006abc99d5106cdf7a261adade5e72d8db7be3d68a1cbd3bccdfb8e1d10b
5
5
  SHA512:
6
- metadata.gz: bf41a960cf7a3d2b0e1b36173d9f64c3de0e3753a8a4ce13a9061d6862390489b007aa9c94339dc7cda178b0f86928f47e1b18a5780147c6dbb6c88ca07fa91f
7
- data.tar.gz: 2ec1c99e9813b9da04af5dea643caf660c51e9b95ca703af0a8f09c136ea4d48d572888f6aca599f43d45d38853681be5e08971b43440814dd9f3f4bfc7a2cf1
6
+ metadata.gz: ab8418cc8cb8739460bb1335092dee1f9110e9453f4ab61bca6430ad0250251db887e5cf95637fb0d1f319030a4b16ad0e188c3c925b9c63ea1aa2fd257da25b
7
+ data.tar.gz: 67c78499a471c58315b1ff8d6c4abd5fe262dda55cfd2d67edf74be77d701a4e777db43cb1b6d38cb7d4cd1e0f6642b93b52f5608ee5df741830103378d5ff3d
@@ -1,15 +1,32 @@
1
1
  # Change Log
2
2
 
3
+ ## [0.1.5] - 2020-06-26
4
+
5
+ ### Refactoring
6
+ - Add more query condition support for card query (limit, order, before_id, after_id)
7
+ * Before
8
+ - Get organzation's fund: (`client.organization(entity_id, 'fund')`)
9
+ * After
10
+ - Get organzation's fund: (`client.organization(entity_id, card_id: 'fund')`)
11
+ - Method for uniformly obtaining deleted entities data and support more query condition
12
+ * Get deleted organzations
13
+ - Before: (`client.deleted_organzations`)
14
+ - After : (`client.deleted_entities(collection_ids: 'organizations', limit: 20)`)
15
+ - Method for uniformly obtaining autocompletes entities data and support more query condition
16
+ * Get autocompletes organzations
17
+ - Before: (`client.autocomplete_organzations`)
18
+ - After : (`client.autocomplete('ekohe', collection_ids: 'organizations', limit: 3)`)
19
+
3
20
  ## [0.1.4] - 2020-06-12
4
21
 
5
22
  ### Added
6
- - Implemented a API to get the fund data of Entity (`client.fund(entity_id)`)
7
- - Implemented a API to get the ownership data of Entity (`client.ownership(entity_id)`)
8
- - Implemented a API to get the founders data of Entity (`client.founders(entity_id)`)
9
- - Implemented a API to get the event_appearances data of Entity (`client.event_appearances(entity_id)`)
10
- - Implemented a API to get the investors data of Entity (`client.investors(entity_id)`)
11
- - Implemented a API to get the jobs data of Entity (`client.jobs(entity_id)`)
12
- - Implemented a API to get the headquarters_address data of Entity (`client.headquarters_address(entity_id)`)
23
+ - Implemented APIs to get the cards data of Entity
24
+ - fund: (`client.organization(entity_id, 'fund')`)
25
+ - ownership: (`client.organization(entity_id, 'ownership')`)
26
+ - founders: (`client.organization(entity_id, 'founders')`)
27
+ - investors: (`client.organization(entity_id, 'investors')`)
28
+ - jobs: (`client.organization(entity_id, 'jobs')`)
29
+ - headquarters_address: (`client.organization(entity_id, 'headquarters_address')`)
13
30
 
14
31
  ## [0.1.3] - 2020-06-09
15
32
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- crunchbase4 (0.1.4)
4
+ crunchbase4 (0.1.5)
5
5
  faraday
6
6
  faraday_curl
7
7
  faraday_middleware
data/README.md CHANGED
@@ -56,13 +56,21 @@ pry(main)> client = Crunchbase::Client.new
56
56
  - [Deleted Entities](https://github.com/ekohe/crunchbase4#deleted-entities)
57
57
 
58
58
  ```ruby
59
- <!-- Entity -->
60
- response = client.organization('ekohe')
61
- response = client.organization('ekohe', 'ipos')
59
+ <!-- Entity and Single Card -->
60
+ response = client.organization('ekohe')
61
+ ipos = client.organization('ekohe', card_id: 'ipos')
62
+ fund = client.organization('ekohe', card_id: 'fund')
63
+ ownership = client.organization('ekohe', card_id: 'ownership')
64
+ founders = client.organization('ekohe', card_id: 'founders')
65
+ investors = client.organization('ekohe', card_id: 'investors')
66
+ jobs = client.organization('ekohe', card_id: 'jobs')
67
+ headquarters_address = client.organization('ekohe', card_id: 'headquarters_address')
68
+ top_2_press_references = client.organization('ekohe', card_id: 'press_references', limit: 2)
69
+
62
70
  response = client.person('mark-zuckerberg')
63
- response = client.person('mark-zuckerberg', 'participated_investments')
71
+ response = client.person('mark-zuckerberg', card_id: 'participated_investments')
64
72
  response = client.funding_round('371c20af8aa94bcba8da0694d138f247')
65
- response = client.funding_round('371c20af8aa94bcba8da0694d138f247', 'investments')
73
+ response = client.funding_round('371c20af8aa94bcba8da0694d138f247', card_id: 'investors')
66
74
  response = client.acquisition('7638eae9-07b7-4fc6-ad20-5d99de3ff928')
67
75
  response = client.fund('aeaac12b-df56-7039-40f9-f1992f88e20e')
68
76
  response = client.ownership('4506d9ce-85d3-4a8f-89cd-07a225359d55')
@@ -83,14 +91,17 @@ client.recent_updates({
83
91
  })
84
92
 
85
93
  <!-- Autocompletes -->
86
- response = client.autocomplete_organizations('ekohe')
87
- response = client.autocomplete_people('encore')
88
- response = client.autocomplete_funding_rounds('facebook')
94
+ response = client.autocomplete('ekohe')
95
+ response = client.autocomplete('ekohe', collection_ids: 'organizations')
96
+ response = client.autocomplete('ekohe', collection_ids: 'organizations', limit: 3)
97
+ response = client.autocomplete('encore', collection_ids: 'people')
98
+ response = client.autocomplete('facebook', collection_ids: 'funding_rounds')
99
+ response = client.autocomplete('facebook', collection_ids: 'press_references')
89
100
 
90
101
  <!-- Deleted Entities -->
91
- response = client.deledeted_organizations
92
- response = client.deledeted_people
93
- response = client.deledeted_funding_rounds
102
+ response = client.deledeted_entities(collection_ids: 'organizations')
103
+ response = client.deledeted_entities(collection_ids: 'people')
104
+ response = client.deledeted_entities(collection_ids: 'funding_rounds')
94
105
  ```
95
106
 
96
107
  #### Module: Utils
@@ -489,7 +500,7 @@ Search by keyword has been supported in "Organization", "People" and "Fund Round
489
500
  * Search in an organization by keyword
490
501
 
491
502
  ```ruby
492
- pry(main)> response = client.autocomplete_organizations('ekohe')
503
+ pry(main)> response = client.autocomplete('ekohe', collection_ids: 'organizations')
493
504
  => #<Crunchbase::Autocompletes::Client:0x00007fecb34ce1e8
494
505
  @conditions={:query=>"ekohe", :collection_ids=>"organizations"},
495
506
  @count=25,
@@ -521,7 +532,7 @@ pry(main)> response.total_count
521
532
  * Search in an people by keyword
522
533
 
523
534
  ```ruby
524
- pry(main)> response = client.autocomplete_people('maxime')
535
+ pry(main)> response = client.autocomplete('maxime', collection_ids: 'people')
525
536
  => #<Crunchbase::Autocompletes::Client:0x00007fecb474f9c0
526
537
  @conditions={:query=>"maxime", :collection_ids=>"people"},
527
538
  @count=25,
@@ -553,7 +564,7 @@ pry(main)> response.total_count
553
564
  * Search in an funding rounds by keyword
554
565
 
555
566
  ```ruby
556
- pry(main)> response = client.autocomplete_funding_rounds('facebook')
567
+ pry(main)> response = client.autocomplete('facebook', collection_ids: 'funding_rounds')
557
568
  => #<Crunchbase::Autocompletes::Client:0x00007fecb4dd66b8
558
569
  @conditions={:query=>"facebook", :collection_ids=>"funding_rounds"},
559
570
  @count=25,
@@ -587,7 +598,7 @@ pry(main)> response.total_count
587
598
  * Get deleted entities by collection_ids
588
599
 
589
600
  ```ruby
590
- pry(main)> response = client.deleted_organizations
601
+ pry(main)> response = client.deleted_entities
591
602
  => #<Crunchbase::DeletedEntities::Client:0x00007fa9196b6498
592
603
  @conditions={:collection_ids=>"organizations"},
593
604
  @count=1000,
@@ -611,8 +622,8 @@ pry(main)> response.count
611
622
  pry(main)> response.total_count
612
623
 
613
624
  # Get deleted people and funding rounds
614
- pry(main)> response = client.deleted_people
615
- pry(main)> response = client.deleted_funding_rounds
625
+ pry(main)> response = client.deleted_entities(collection_ids: 'people')
626
+ pry(main)> response = client.deleted_entities(collection_ids: 'funding_rounds')
616
627
  ```
617
628
 
618
629
  ## Development
@@ -6,7 +6,7 @@ require_relative '../utilities/cb_model'
6
6
  module Crunchbase
7
7
  # Whole entities endpoints
8
8
  module Entities
9
- # Send request for entities endpoints
9
+ # using Crunchbase's Entity Lookup API endpoints
10
10
  class Client
11
11
  include ::Crunchbase::Utilities::Request
12
12
  include ::Crunchbase::Utilities::CbModel
@@ -21,7 +21,7 @@ module Crunchbase
21
21
  # Will include all attribute from API document
22
22
  def fetch
23
23
  cbobject.parse_response(entity(
24
- root_uri,
24
+ entity_request_uri,
25
25
  field_ids: cbobject.field_ids.join(',')
26
26
  ))
27
27
  end
@@ -29,28 +29,36 @@ module Crunchbase
29
29
  # Only include a part basis fields of endpoint
30
30
  def fetch_cards(card_names = [])
31
31
  cbobject.parse_response(entity(
32
- root_uri,
32
+ entity_request_uri,
33
33
  field_ids: cbobject.basis_fields.join(','),
34
34
  cards: (cbobject.full_cards & card_names).join(',')
35
35
  ), cbobject.basis_fields, card_names)
36
36
  end
37
37
 
38
- def cards(card_id)
38
+ # Auto combine the card num field to request field_ids
39
+ #
40
+ # Example: if card_id is investors, will auto add num_investors
41
+ def cards(card_id, **args)
39
42
  raise Crunchbase::Error, 'Invalid card_id' unless cbobject.full_cards.include?(card_id)
40
43
 
44
+ field_ids = cbobject.basis_fields.concat(cbobject.card_num_field(card_id))
45
+
46
+ request_args = args.merge(
47
+ field_ids: field_ids.join(','),
48
+ card_field_ids: cbobject.model_mappings[card_id].new.field_ids.join(',')
49
+ )
41
50
  cbobject.parse_response(entity(
42
- root_uri(name: __method__, id: card_id),
43
- field_ids: cbobject.basis_fields.join(','),
44
- card_field_ids: cbobject.model_mappings[card_id].new.field_ids.join(',')
45
- ), cbobject.basis_fields, [card_id])
51
+ entity_request_uri(name: __method__, card_id: card_id),
52
+ request_args
53
+ ), field_ids, [card_id])
46
54
  end
47
55
 
48
56
  private
49
57
 
50
- def root_uri(args = {})
58
+ def entity_request_uri(**args)
51
59
  [
52
60
  ROOT_LIST, kclass_name::RESOURCE_LIST,
53
- @entity_id, args[:name], args[:id]
61
+ @entity_id, args[:name], args[:card_id]
54
62
  ].compact.join('/')
55
63
  end
56
64
  end
@@ -28,6 +28,10 @@ module Crunchbase
28
28
  'headquarters_address' => Address
29
29
  }
30
30
  end
31
+
32
+ def card_num_field(card_id)
33
+ field_ids & ["num_#{card_id}"]
34
+ end
31
35
  end
32
36
  end
33
37
  end
@@ -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
@@ -85,8 +87,8 @@ module Crunchbase
85
87
  end
86
88
 
87
89
  # Lookup an fund or Single card
88
- def fund(entity_id, card_id: nil)
89
- lookup_for('fund', entity_id, card_id)
90
+ def fund(entity_id, **card_args)
91
+ lookup_for('fund', entity_id, card_args)
90
92
  end
91
93
 
92
94
  # Lookup fund's all card
@@ -95,8 +97,8 @@ module Crunchbase
95
97
  end
96
98
 
97
99
  # Lookup an fund or Single card
98
- def ownership(entity_id, card_id: nil)
99
- lookup_for('ownership', entity_id, card_id)
100
+ def ownership(entity_id, **card_args)
101
+ lookup_for('ownership', entity_id, card_args)
100
102
  end
101
103
 
102
104
  # Lookup fund's all card
@@ -110,11 +112,13 @@ module Crunchbase
110
112
  Crunchbase::Entities::Client.new(entity_id, entity_type)
111
113
  end
112
114
 
113
- def lookup_for(entity_type, entity_id, card_id)
115
+ def lookup_for(entity_type, entity_id, **card_args)
114
116
  kobject = entities(entity_type, entity_id)
117
+
118
+ card_id = card_args&.delete(:card_id)
115
119
  return kobject.fetch if card_id.nil?
116
120
 
117
- kobject.cards(card_id)
121
+ kobject.cards(card_id, card_args)
118
122
  end
119
123
  end
120
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?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Crunchbase
4
- VERSION = '0.1.4'
4
+ VERSION = '0.1.5'
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.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Encore Shao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-12 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday