crunchbase4 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +5 -0
- data/CHANGELOG.md +34 -0
- data/Gemfile.lock +1 -1
- data/README.md +210 -2
- data/lib/crunchbase.rb +30 -1
- data/lib/crunchbase/autocompletes/client.rb +75 -0
- data/lib/crunchbase/client.rb +4 -0
- data/lib/crunchbase/models.rb +2 -0
- data/lib/crunchbase/models/autocomplete_entity.rb +25 -0
- data/lib/crunchbase/models/ipo.rb +48 -0
- data/lib/crunchbase/utilities/autocomplete.rb +66 -0
- data/lib/crunchbase/utilities/deleted_entities.rb +15 -0
- data/lib/crunchbase/utilities/entity_endpoints.rb +10 -0
- data/lib/crunchbase/utilities/request.rb +19 -10
- data/lib/crunchbase/utilities/response.rb +1 -1
- data/lib/crunchbase/utilities/search_endpoints.rb +22 -0
- data/lib/crunchbase/utilities/search_query_parameters.rb +64 -0
- data/lib/crunchbase/utilities/veriables.rb +335 -0
- data/lib/crunchbase/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb7a01707e086f0d73d6a92807f4d0a9e2dfab44e73647254781103792817373
|
4
|
+
data.tar.gz: b61240087a0344caf96bb065fa9c309f83e19d2357d805f74278cf2bda9381cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b08389e81858a042b5204787ef8c25a78f712f23688cfb40e81a428298205748158d2e5380a9a24551b896c103212dab8b10b183e4d5ef8d357fb0b0c02f3515
|
7
|
+
data.tar.gz: cc99c470c8838170978d862a738283ca2481bbf75deeeb9e4760b46902321ddd3469e31e6e01183917cea54794a20187c0b1648ba2962ce675a1bf6ccac3bea1
|
data/.rubocop_todo.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
## [0.1.2] - 2020-06-07
|
6
|
+
|
7
|
+
### Added
|
8
|
+
- Implemented searches APIs to get the recent updates entities on Search
|
9
|
+
- organzations
|
10
|
+
- people
|
11
|
+
- funding rounds
|
12
|
+
- Implemented autocomplete API to allow user filter entities by keyword
|
13
|
+
- organzations
|
14
|
+
- people
|
15
|
+
- funding rounds
|
16
|
+
|
17
|
+
## [0.1.1] - 2020-06-06
|
18
|
+
|
19
|
+
### Added
|
20
|
+
- Implemented APIs to get acquisition and investment of Entity
|
21
|
+
- Implemented APIs to search organzations and funding rounds of Search
|
22
|
+
|
23
|
+
### Changed
|
24
|
+
- Refactor the API client to support search API
|
25
|
+
|
26
|
+
## [0.1.0] - 2020-06-04
|
27
|
+
|
28
|
+
### Added
|
29
|
+
|
30
|
+
- Implemented APIs to get organzation and funding round of Entity
|
31
|
+
|
32
|
+
## [0.0.0] - 2020-06-01
|
33
|
+
|
34
|
+
- Learning the Crunchbase V4 document and ready to create the new Gem
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -186,6 +186,25 @@ pry(main)> response = client.investment('1368da0c-07b0-46ef-9a86-b518367e60d6')
|
|
186
186
|
}
|
187
187
|
```
|
188
188
|
|
189
|
+
#### Get the latest updated entities
|
190
|
+
|
191
|
+
Allow user using the method `recent_updates(args)` to get recent updates for each endpoint on searches
|
192
|
+
|
193
|
+
# Example to get recent updated organizations
|
194
|
+
|
195
|
+
```
|
196
|
+
args = {
|
197
|
+
scope_name: 'organization', # must
|
198
|
+
date: '2020-05-05', # must
|
199
|
+
field_ids: %w[name website permalink], # default %[uuid created_at updated_at]
|
200
|
+
sort: 'desc' # default `desc`
|
201
|
+
before_id: 'uuid' # optional
|
202
|
+
after_id: 'uuid' # optional
|
203
|
+
}
|
204
|
+
|
205
|
+
response = client.recent_updates(args)
|
206
|
+
```
|
207
|
+
|
189
208
|
#### Search organizations by query conditions and order
|
190
209
|
|
191
210
|
* Step1: Needs to build the query conditions
|
@@ -279,24 +298,213 @@ pry(main)> response = client.search_organizations(query_data)
|
|
279
298
|
- Get total count: `response.total_count`
|
280
299
|
- Get entities count: `response.count`
|
281
300
|
|
301
|
+
#### Search people by query conditions and order
|
302
|
+
|
303
|
+
* Step1: Needs to build the query conditions
|
304
|
+
|
305
|
+
```
|
306
|
+
query_data = {
|
307
|
+
'field_ids' => %w[
|
308
|
+
first_name
|
309
|
+
last_name
|
310
|
+
uuid
|
311
|
+
permalink
|
312
|
+
name
|
313
|
+
],
|
314
|
+
'order' => [
|
315
|
+
{
|
316
|
+
'field_id' => 'last_name',
|
317
|
+
'sort' => 'asc',
|
318
|
+
'nulls' => 'last'
|
319
|
+
}
|
320
|
+
],
|
321
|
+
'query' => [
|
322
|
+
{
|
323
|
+
'type' => 'predicate',
|
324
|
+
'field_id' => 'first_name',
|
325
|
+
'operator_id' => 'contains',
|
326
|
+
'values' => [
|
327
|
+
'Maxime'
|
328
|
+
]
|
329
|
+
},
|
330
|
+
{
|
331
|
+
'type' => 'predicate',
|
332
|
+
'field_id' => 'last_name',
|
333
|
+
'operator_id' => 'contains',
|
334
|
+
'values' => [
|
335
|
+
'Guilbot'
|
336
|
+
]
|
337
|
+
}
|
338
|
+
],
|
339
|
+
'limit' => 5
|
340
|
+
}
|
341
|
+
```
|
342
|
+
|
343
|
+
* Use `client` to send a request and parse response
|
344
|
+
|
345
|
+
```
|
346
|
+
pry(main)> response = client.search_people(query_data)
|
347
|
+
=> #<Crunchbase::Searches::Client:0x00007f9acca12d18
|
348
|
+
@conditions=
|
349
|
+
{"field_ids"=>["first_name", "last_name", "uuid", "permalink", "name"],
|
350
|
+
"order"=>[{"field_id"=>"last_name", "sort"=>"asc", "nulls"=>"last"}],
|
351
|
+
"query"=>
|
352
|
+
[{"type"=>"predicate", "field_id"=>"first_name", "operator_id"=>"contains", "values"=>["Maxime"]}, {"type"=>"predicate", "field_id"=>"last_name", "operator_id"=>"contains", "values"=>["Guilbot"]}],
|
353
|
+
"limit"=>5},
|
354
|
+
@count=1,
|
355
|
+
@entities=[#<Crunchbase::Models::Person:0x00007f9acca43418 @first_name="Maxime", @last_name="Guilbot", @name="Maxime Guilbot", @permalink="maxime-guilbot", @uuid="90f4c92e-3479-1f6e-6470-b2ae78805839">],
|
356
|
+
@entity_type="person",
|
357
|
+
@kclass_name=Crunchbase::Models::Person,
|
358
|
+
@total_count=1>
|
359
|
+
pry(main)> response.entities
|
360
|
+
=> [#<Crunchbase::Models::Person:0x00007f9acca43418 @first_name="Maxime", @last_name="Guilbot", @name="Maxime Guilbot", @permalink="maxime-guilbot", @uuid="90f4c92e-3479-1f6e-6470-b2ae78805839">]
|
361
|
+
pry(main)> response.total_count
|
362
|
+
=> 1
|
363
|
+
```
|
364
|
+
|
365
|
+
## Autocompletes
|
366
|
+
|
367
|
+
### Allow users to filter by keyword from these endpoints
|
368
|
+
|
369
|
+
Search by keyword has been supported in "Organization", "People" and "Fund Round"
|
370
|
+
|
371
|
+
1. Example: Search in an organization by keyword
|
372
|
+
|
373
|
+
```
|
374
|
+
pry(main)> response = client.autocomplete_organizations('ekohe')
|
375
|
+
=> #<Crunchbase::Autocompletes::Client:0x00007fecb34ce1e8
|
376
|
+
@conditions={:query=>"ekohe", :collection_ids=>"organizations"},
|
377
|
+
@count=25,
|
378
|
+
@entities=
|
379
|
+
[#<Crunchbase::Models::AutocompleteEntity:0x00007fecb3976cb8
|
380
|
+
@facet_ids=["siftery", "apptopia", "company", "rank", "builtwith", "bombora", "similarweb"],
|
381
|
+
@identifier=["9fe491b2-b6a1-5c87-0f4d-226dd0cc97a9", "Ekohe", "ekohe"],
|
382
|
+
@permalink="ekohe",
|
383
|
+
@short_description="Creating cutting-edge, useful technical solutions to move you forward -- we deliver on the promise of AI.",
|
384
|
+
@uuid="9fe491b2-b6a1-5c87-0f4d-226dd0cc97a9">,
|
385
|
+
#<Crunchbase::Models::AutocompleteEntity:0x00007fecb3975980
|
386
|
+
@facet_ids=["rank", "builtwith", "company", "siftery"],
|
387
|
+
@identifier=["4994381c-3f6a-07bc-6ccf-a180cfbfbf60", "Ekohealth", "ekohealth"],
|
388
|
+
@permalink="ekohealth",
|
389
|
+
@short_description="Ekohealth is an online platform, entitling the patients having Ekohealth card to avail up to 50% discount on medical expense.",
|
390
|
+
@uuid="4994381c-3f6a-07bc-6ccf-a180cfbfbf60">,
|
391
|
+
#<Crunchbase::Models::AutocompleteEntity:0x00007fecb3974cb0
|
392
|
+
@facet_ids=["siftery", "apptopia", "company", "rank", "builtwith", "bombora", "similarweb"],
|
393
|
+
@identifier=["d21d2598-6f76-d6b4-458e-579bc9c3a36d", "EcoHealth Alliance", "ecohealth-alliance"],
|
394
|
+
@permalink="ecohealth-alliance",
|
395
|
+
@short_description="EcoHealth Alliance is a solutions that promote conservation and prevents pandemics.",
|
396
|
+
@uuid="d21d2598-6f76-d6b4-458e-579bc9c3a36d">,
|
397
|
+
...]
|
398
|
+
pry(main)> response.entities
|
399
|
+
pry(main)> response.count
|
400
|
+
pry(main)> response.total_count
|
401
|
+
```
|
402
|
+
|
403
|
+
2. Example: Search in an people by keyword
|
404
|
+
|
405
|
+
```
|
406
|
+
pry(main)> response = client.autocomplete_people('maxime')
|
407
|
+
=> #<Crunchbase::Autocompletes::Client:0x00007fecb474f9c0
|
408
|
+
@conditions={:query=>"maxime", :collection_ids=>"people"},
|
409
|
+
@count=25,
|
410
|
+
@entities=
|
411
|
+
[#<Crunchbase::Models::AutocompleteEntity:0x00007fecb477db40
|
412
|
+
@facet_ids=["rank"],
|
413
|
+
@identifier=["e270e799-052d-60ba-86d4-9c0535556851", "Maxime Leufroy-Murat", "maxime-leufroy-murat"],
|
414
|
+
@permalink="maxime-leufroy-murat",
|
415
|
+
@short_description="Maxime Leufroy-Murat - CEO @ FG Properties",
|
416
|
+
@uuid="e270e799-052d-60ba-86d4-9c0535556851">,
|
417
|
+
#<Crunchbase::Models::AutocompleteEntity:0x00007fecb477ce70
|
418
|
+
@facet_ids=["rank"],
|
419
|
+
@identifier=["0b71cab9-43dc-4f03-9267-4dcbc191ec30", "Maxime Schwab", "maxime-schwab"],
|
420
|
+
@permalink="maxime-schwab",
|
421
|
+
@short_description="Co-Founder",
|
422
|
+
@uuid="0b71cab9-43dc-4f03-9267-4dcbc191ec30">,
|
423
|
+
#<Crunchbase::Models::AutocompleteEntity:0x00007fecb477c1f0
|
424
|
+
@facet_ids=["rank"],
|
425
|
+
@identifier=["527a4a8e-46e4-d808-c7df-b540bd8fedab", "Maxime Lombardini", "maxime-lombardini"],
|
426
|
+
@permalink="maxime-lombardini",
|
427
|
+
@short_description="Maxime Lombardini is Chief Executive Officer and Member of the board of Iliad since 2007. \r\n\r\nBefore joining Iliad, Maxime Lombardini use to...",
|
428
|
+
@uuid="527a4a8e-46e4-d808-c7df-b540bd8fedab">,
|
429
|
+
...]
|
430
|
+
pry(main)> response.entities
|
431
|
+
pry(main)> response.count
|
432
|
+
pry(main)> response.total_count
|
433
|
+
```
|
434
|
+
2. Example: Search in an funding rounds by keyword
|
435
|
+
|
436
|
+
```
|
437
|
+
pry(main)> pry(main)> response = client.autocomplete_funding_rounds('facebook')
|
438
|
+
=> #<Crunchbase::Autocompletes::Client:0x00007fecb4dd66b8
|
439
|
+
@conditions={:query=>"facebook", :collection_ids=>"funding_rounds"},
|
440
|
+
@count=25,
|
441
|
+
@entities=
|
442
|
+
[#<Crunchbase::Models::AutocompleteEntity:0x00007fecb4e04950
|
443
|
+
@facet_ids=["rank"],
|
444
|
+
@identifier=["6fae3958-a001-27c0-fb7e-666266aedd78", "Series B - Facebook", "facebook-series-b--6fae3958"],
|
445
|
+
@permalink="facebook-series-b--6fae3958",
|
446
|
+
@short_description="Facebook raised $27500000 on 2006-04-01 in Series B",
|
447
|
+
@uuid="6fae3958-a001-27c0-fb7e-666266aedd78">,
|
448
|
+
#<Crunchbase::Models::AutocompleteEntity:0x00007fecb4e17c30
|
449
|
+
@facet_ids=["rank"],
|
450
|
+
@identifier=["d950d7a5-79ff-fb93-ca87-13386b0e2feb", "Series A - Facebook", "facebook-series-a--d950d7a5"],
|
451
|
+
@permalink="facebook-series-a--d950d7a5",
|
452
|
+
@short_description="Facebook raised $12700000 on 2005-05-01 in Series A",
|
453
|
+
@uuid="d950d7a5-79ff-fb93-ca87-13386b0e2feb">,
|
454
|
+
#<Crunchbase::Models::AutocompleteEntity:0x00007fecb4e16f60
|
455
|
+
@facet_ids=["rank"],
|
456
|
+
@identifier=["59971bc0-0935-be60-e279-a9db5e787169", "Secondary Market - Facebook", "facebook-secondary-market--59971bc0"],
|
457
|
+
@permalink="facebook-secondary-market--59971bc0",
|
458
|
+
@short_description="Facebook raised $120000000 on 2010-06-28 in Secondary Market",
|
459
|
+
@uuid="59971bc0-0935-be60-e279-a9db5e787169">,
|
460
|
+
...]
|
461
|
+
pry(main)> response.entities
|
462
|
+
pry(main)> response.count
|
463
|
+
pry(main)> response.total_count
|
464
|
+
```
|
465
|
+
|
282
466
|
## Development
|
283
467
|
|
284
468
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
285
469
|
|
286
|
-
### Examples of API requests
|
470
|
+
### Examples of API requests for each endpoint
|
287
471
|
|
288
472
|
```
|
289
473
|
Crunchbase.config.user_key = 'user_key'
|
290
474
|
client = Crunchbase::Client.new
|
475
|
+
|
476
|
+
<!-- Entity -->
|
291
477
|
response = client.organization('ekohe')
|
292
478
|
response = client.person('mark-zuckerberg')
|
293
479
|
response = client.funding_round('371c20af8aa94bcba8da0694d138f247')
|
294
480
|
response = client.acquisition('7638eae9-07b7-4fc6-ad20-5d99de3ff928')
|
481
|
+
|
482
|
+
<!-- Search -->
|
483
|
+
client.search_organizations(query_data)
|
484
|
+
client.search_people(query_data)
|
485
|
+
client.search_funding_rounds(query_data)
|
486
|
+
client.recent_updates({
|
487
|
+
scope_name: 'organization',
|
488
|
+
field_ids: %w[name website permalink],
|
489
|
+
date: '2020-05-05',
|
490
|
+
limit: 100
|
491
|
+
})
|
492
|
+
|
493
|
+
<!-- Autocompletes -->
|
494
|
+
response = client.autocomplete_organizations('ekohe')
|
495
|
+
response = client.autocomplete_people('encore')
|
496
|
+
response = client.autocomplete_funding_rounds('facebook')
|
295
497
|
```
|
296
498
|
|
499
|
+
## Changelog
|
500
|
+
|
501
|
+
If you want to know what update, please check the [Changelog](https://github.com/ekohe/crunchbase4/blob/master/CHANGELOG.md).
|
502
|
+
|
297
503
|
## Contributing
|
298
504
|
|
299
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/ekohe/crunchbase4. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected
|
505
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ekohe/crunchbase4. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected.
|
506
|
+
|
507
|
+
To see all contributors from https://github.com/ekohe/crunchbase4/graphs/contributors
|
300
508
|
|
301
509
|
## License
|
302
510
|
|
data/lib/crunchbase.rb
CHANGED
@@ -4,11 +4,40 @@ require 'crunchbase/version'
|
|
4
4
|
|
5
5
|
require 'crunchbase/config'
|
6
6
|
require 'crunchbase/client'
|
7
|
+
require 'crunchbase/models'
|
7
8
|
require 'crunchbase/entities'
|
8
9
|
require 'crunchbase/searches'
|
9
|
-
require 'crunchbase/
|
10
|
+
require 'crunchbase/utilities/veriables'
|
10
11
|
|
12
|
+
# CB v4
|
11
13
|
module Crunchbase
|
12
14
|
API_VERSION = 'v4'
|
13
15
|
BASE_URI = "https://api.crunchbase.com/api/#{API_VERSION}/"
|
16
|
+
|
17
|
+
# Defined Veriables for the data Category or Types
|
18
|
+
#
|
19
|
+
# Crunchbase::Utils.constants => [
|
20
|
+
# :OPERATING_STATUS,
|
21
|
+
# :PROGRAM_TYPES,
|
22
|
+
# :REVENUE_RANGES,
|
23
|
+
# :COMPANY_TYPES,
|
24
|
+
# :FACET_IDS,
|
25
|
+
# :SCHOOL_METHODS,
|
26
|
+
# :IPO_STATUS,
|
27
|
+
# :FUNDING_STAGES,
|
28
|
+
# :CURRENCY_ENUM,
|
29
|
+
# :DATE_PRECISIONS,
|
30
|
+
# :LAYOUT_IDS,
|
31
|
+
# :NUM_EMPLOYEES_ENUM,
|
32
|
+
# :FUNDING_TYPES,
|
33
|
+
# :SCHOOL_TYPES,
|
34
|
+
# :QUERY_OPERATORS,
|
35
|
+
# :STATUS,
|
36
|
+
# :STOCK_EXCHANGE_SYMBOLS
|
37
|
+
# ]
|
38
|
+
#
|
39
|
+
# Crunchbase::Utils::NUM_EMPLOYEES_ENUM
|
40
|
+
class Utils
|
41
|
+
include Utilities::Veriables
|
42
|
+
end
|
14
43
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../utilities/request'
|
4
|
+
require_relative '../utilities/cb_model'
|
5
|
+
|
6
|
+
module Crunchbase
|
7
|
+
# autocompletes endpoints
|
8
|
+
module Autocompletes
|
9
|
+
# Send request for autocompletes endpoint
|
10
|
+
#
|
11
|
+
# API doc:
|
12
|
+
# https://app.swaggerhub.com/apis-docs/Crunchbase/crunchbase-enterprise_api/1.0.1#/Autocomplete/get_autocompletes
|
13
|
+
class Client
|
14
|
+
include ::Crunchbase::Utilities::Request
|
15
|
+
include ::Crunchbase::Utilities::CbModel
|
16
|
+
|
17
|
+
attr_accessor :total_count, :count, :entities, :conditions, :entity_type
|
18
|
+
|
19
|
+
ROOT_LIST = 'autocompletes'
|
20
|
+
LIMIT = 25
|
21
|
+
|
22
|
+
def initialize(raw_data)
|
23
|
+
@conditions = raw_data
|
24
|
+
@entity_type = 'autocomplete_entity'
|
25
|
+
end
|
26
|
+
|
27
|
+
# Will include all attribute from API document
|
28
|
+
def autocompletes
|
29
|
+
wrapping!(
|
30
|
+
get(
|
31
|
+
ROOT_LIST,
|
32
|
+
autocompletes_parameters
|
33
|
+
)
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def wrapping!(response)
|
40
|
+
query_results = search_results(response.dig('entities'))
|
41
|
+
|
42
|
+
self.total_count = response['count']
|
43
|
+
self.entities = query_results
|
44
|
+
self.count = query_results.size
|
45
|
+
self
|
46
|
+
end
|
47
|
+
|
48
|
+
# One item of organization
|
49
|
+
#
|
50
|
+
# {
|
51
|
+
# "facet_ids"=>
|
52
|
+
# ["siftery", "apptopia", "company", "rank", "builtwith", "bombora", "similarweb"],
|
53
|
+
# "identifier"=>
|
54
|
+
# {
|
55
|
+
# "uuid"=>"9fe491b2-b6a1-5c87-0f4d-226dd0cc97a9",
|
56
|
+
# "value"=>"Ekohe",
|
57
|
+
# "image_id"=>"v1500646625/zhionn8nlgbkz4lj7ilz.png",
|
58
|
+
# "permalink"=>"ekohe",
|
59
|
+
# "entity_def_id"=>"organization"
|
60
|
+
# },
|
61
|
+
# "short_description"=>
|
62
|
+
# "Creating cutting-edge, useful technical solutions to move you forward -- we deliver on the promise of AI."
|
63
|
+
# }
|
64
|
+
def search_results(entities)
|
65
|
+
entities.each_with_object([]) do |entity, objects|
|
66
|
+
objects << cbobject.parse_response(entity)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def autocompletes_parameters
|
71
|
+
@conditions.merge(limit: @conditions[:limit] || LIMIT)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/crunchbase/client.rb
CHANGED
@@ -2,11 +2,15 @@
|
|
2
2
|
|
3
3
|
require_relative 'utilities/entity_endpoints'
|
4
4
|
require_relative 'utilities/search_endpoints'
|
5
|
+
require_relative 'utilities/autocomplete'
|
6
|
+
require_relative 'utilities/deleted_entities'
|
5
7
|
|
6
8
|
module Crunchbase
|
7
9
|
# API Request
|
8
10
|
class Client
|
9
11
|
include Utilities::EntityEndpoints
|
10
12
|
include Utilities::SearchEndpoints
|
13
|
+
include Utilities::Autocomplete
|
14
|
+
include Utilities::DeletedEntities
|
11
15
|
end
|
12
16
|
end
|
data/lib/crunchbase/models.rb
CHANGED
@@ -4,6 +4,7 @@ module Crunchbase
|
|
4
4
|
# Models
|
5
5
|
module Models
|
6
6
|
autoload :Entity, 'crunchbase/models/entity'
|
7
|
+
autoload :AutocompleteEntity, 'crunchbase/models/autocomplete_entity'
|
7
8
|
autoload :Organization, 'crunchbase/models/organization'
|
8
9
|
autoload :Person, 'crunchbase/models/person'
|
9
10
|
autoload :FundingRound, 'crunchbase/models/funding_round'
|
@@ -12,5 +13,6 @@ module Crunchbase
|
|
12
13
|
autoload :PressReference, 'crunchbase/models/press_reference'
|
13
14
|
autoload :CategoryGroup, 'crunchbase/models/category_group'
|
14
15
|
autoload :Category, 'crunchbase/models/category'
|
16
|
+
autoload :Ipo, 'crunchbase/models/ipo'
|
15
17
|
end
|
16
18
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Get the Entities data from API
|
5
|
+
module Models
|
6
|
+
# For AutocompleteEntity
|
7
|
+
class AutocompleteEntity < Entity
|
8
|
+
def field_ids
|
9
|
+
basis_fields
|
10
|
+
end
|
11
|
+
|
12
|
+
def basis_fields
|
13
|
+
%w[
|
14
|
+
identifier
|
15
|
+
facet_ids
|
16
|
+
short_description
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse_response(response)
|
21
|
+
dynamic_attributes(self, field_ids, response)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Get the Entities data from API
|
5
|
+
module Models
|
6
|
+
# Get the person data from API
|
7
|
+
class Ipo < Entity
|
8
|
+
RESOURCE_LIST = 'ipos'
|
9
|
+
|
10
|
+
def field_ids
|
11
|
+
%w[
|
12
|
+
created_at
|
13
|
+
entity_def_id
|
14
|
+
image_id
|
15
|
+
rank
|
16
|
+
rank_ipo
|
17
|
+
shares_outstanding
|
18
|
+
shares_sold
|
19
|
+
stock_exchange_symbol
|
20
|
+
stock_full_symbol
|
21
|
+
updated_at
|
22
|
+
] + basis_fields
|
23
|
+
end
|
24
|
+
|
25
|
+
def basis_fields
|
26
|
+
%w[
|
27
|
+
uuid
|
28
|
+
permalink
|
29
|
+
identifier
|
30
|
+
amount_raised
|
31
|
+
share_price
|
32
|
+
stock_symbol
|
33
|
+
valuation
|
34
|
+
delisted_on
|
35
|
+
went_public_on
|
36
|
+
short_description
|
37
|
+
]
|
38
|
+
end
|
39
|
+
|
40
|
+
def full_cards
|
41
|
+
%w[
|
42
|
+
organization
|
43
|
+
press_references
|
44
|
+
]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../autocompletes/client'
|
4
|
+
|
5
|
+
module Crunchbase
|
6
|
+
# Utilities
|
7
|
+
module Utilities
|
8
|
+
# Autocomplete on Searches
|
9
|
+
module Autocomplete
|
10
|
+
# endpoint: /autocompletes
|
11
|
+
#
|
12
|
+
# Suggests matching Identifier entities based on the query and entity_def_ids provided.
|
13
|
+
#
|
14
|
+
# query * string
|
15
|
+
# Value to perform the autocomplete search with.
|
16
|
+
# collection_ids string
|
17
|
+
# A comma separated list of collection ids to search against.
|
18
|
+
# Leaving this blank means it will search across all identifiers.
|
19
|
+
# Entity defs can be constrained to specific facets by providing them as facet collections.
|
20
|
+
# Relationship collections will resolve to their underlying entity def.
|
21
|
+
#
|
22
|
+
# Collection ids are:
|
23
|
+
# organizations, people, funding_rounds, acquisitions, investments, events,
|
24
|
+
# press_references, funds, event_appearances, ipos, ownerships, categories,
|
25
|
+
# category_groups, locations, jobs
|
26
|
+
# limit integer
|
27
|
+
# Number of results to retrieve; default = 10, max = 25
|
28
|
+
#
|
29
|
+
#
|
30
|
+
# Example for organizations
|
31
|
+
#
|
32
|
+
# raw_data = {
|
33
|
+
# query: keyword,
|
34
|
+
# collection_ids: 'organizations'
|
35
|
+
# }
|
36
|
+
def autocomplete_organizations(keyword)
|
37
|
+
autocompletes(wrapper_query_data(keyword, 'organizations'))
|
38
|
+
end
|
39
|
+
|
40
|
+
def autocomplete_people(keyword)
|
41
|
+
autocompletes(wrapper_query_data(keyword, 'people'))
|
42
|
+
end
|
43
|
+
|
44
|
+
def autocomplete_funding_rounds(keyword)
|
45
|
+
autocompletes(wrapper_query_data(keyword, 'funding_rounds'))
|
46
|
+
end
|
47
|
+
|
48
|
+
def autocomplete_press_references(keyword)
|
49
|
+
autocompletes(wrapper_query_data(keyword, 'press_references'))
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def autocompletes(raw_data)
|
55
|
+
Crunchbase::Autocompletes::Client.new(raw_data).autocompletes
|
56
|
+
end
|
57
|
+
|
58
|
+
def wrapper_query_data(keyword, collection_ids)
|
59
|
+
{
|
60
|
+
query: keyword,
|
61
|
+
collection_ids: collection_ids
|
62
|
+
}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Utilities
|
5
|
+
module Utilities
|
6
|
+
# Autocomplete on Searches
|
7
|
+
module DeletedEntities
|
8
|
+
# endpoint: /deleted_entities
|
9
|
+
#
|
10
|
+
# Retrieve deleted entities
|
11
|
+
# Retrieve deleted entities for a collection id
|
12
|
+
def deleted_entities(collection_id: nil); end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -74,6 +74,16 @@ module Crunchbase
|
|
74
74
|
entities('press_reference', entity_id).fetch_cards
|
75
75
|
end
|
76
76
|
|
77
|
+
# Lookup an Ipo or Single card
|
78
|
+
def ipo(entity_id, card_id: nil)
|
79
|
+
lookup_for('ipo', entity_id, card_id)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Lookup Ipo's all card
|
83
|
+
def ipo_cards(entity_id)
|
84
|
+
entities('ipo', entity_id).fetch_cards
|
85
|
+
end
|
86
|
+
|
77
87
|
private
|
78
88
|
|
79
89
|
def entities(entity_type, entity_id)
|
@@ -13,19 +13,16 @@ module Crunchbase
|
|
13
13
|
module Request
|
14
14
|
module_function
|
15
15
|
|
16
|
+
# Autocompletes endpoint
|
17
|
+
def get(uri, *args)
|
18
|
+
fetch_request(uri, *args)
|
19
|
+
end
|
20
|
+
|
16
21
|
# Entity endpoints
|
17
22
|
#
|
18
23
|
# https://app.swaggerhub.com/apis-docs/Crunchbase/crunchbase-enterprise_api/1.0.1#/Entity/get_entities_organizations__entity_id_
|
19
24
|
def entity(uri, *args)
|
20
|
-
|
21
|
-
faraday.adapter Faraday.default_adapter
|
22
|
-
faraday.response :json
|
23
|
-
faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
|
24
|
-
end.get(uri, *args)
|
25
|
-
|
26
|
-
return response.body if response.status == 200
|
27
|
-
|
28
|
-
raise Error, response.reason_phrase
|
25
|
+
fetch_request(uri, *args)
|
29
26
|
end
|
30
27
|
|
31
28
|
# Search endpoints
|
@@ -41,11 +38,23 @@ module Crunchbase
|
|
41
38
|
|
42
39
|
return response.body if response.status == 200
|
43
40
|
|
44
|
-
raise Error, response.
|
41
|
+
raise Error, response.body[0]['message']
|
45
42
|
end
|
46
43
|
|
47
44
|
private
|
48
45
|
|
46
|
+
def fetch_request(uri, *args)
|
47
|
+
response = Faraday.new(url: BASE_URI, headers: headers) do |faraday|
|
48
|
+
faraday.adapter Faraday.default_adapter
|
49
|
+
faraday.response :json
|
50
|
+
faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
|
51
|
+
end.get(uri, *args)
|
52
|
+
|
53
|
+
return response.body if response.status == 200
|
54
|
+
|
55
|
+
raise Error, response.body['error']
|
56
|
+
end
|
57
|
+
|
49
58
|
def debug_mode?
|
50
59
|
Crunchbase.config.debug || false
|
51
60
|
end
|
@@ -17,7 +17,7 @@ module Crunchbase
|
|
17
17
|
attribute_names.delete(attribute_name)
|
18
18
|
hash_datas = response&.dig(attribute_name)
|
19
19
|
|
20
|
-
values = hash_datas&.map { |k, v| v if %w[uuid permalink].include?(k) }&.compact || []
|
20
|
+
values = hash_datas&.map { |k, v| v if %w[uuid permalink value].include?(k) }&.compact || []
|
21
21
|
dynamic_define_method(object, attribute_name, values)
|
22
22
|
hash_datas&.keys&.each do |key|
|
23
23
|
next unless %w[uuid permalink].include?(key)
|
@@ -1,10 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative './search_query_parameters'
|
4
|
+
|
3
5
|
module Crunchbase
|
4
6
|
# Utilities
|
5
7
|
module Utilities
|
6
8
|
# All Searches API endpoint
|
7
9
|
module SearchEndpoints
|
10
|
+
include SearchQueryParameters
|
11
|
+
|
12
|
+
# Example to searching organizations
|
13
|
+
#
|
14
|
+
# {
|
15
|
+
# scope_name: 'organization',
|
16
|
+
# date: '2020-05-05',
|
17
|
+
# field_ids: %w[name website permalink],
|
18
|
+
# sort: 'desc'
|
19
|
+
# before_id: 'uuid'
|
20
|
+
# after_id: 'uuid'
|
21
|
+
# }
|
22
|
+
def recent_updates(args)
|
23
|
+
searches(query_parameters(args), args[:scope_name]).searches
|
24
|
+
end
|
25
|
+
|
8
26
|
# For Searches
|
9
27
|
def search_organizations(raw_data)
|
10
28
|
searches(raw_data, 'organization').searches
|
@@ -14,6 +32,10 @@ module Crunchbase
|
|
14
32
|
searches(raw_data, 'funding_round').searches
|
15
33
|
end
|
16
34
|
|
35
|
+
def search_people(raw_data)
|
36
|
+
searches(raw_data, 'person').searches
|
37
|
+
end
|
38
|
+
|
17
39
|
private
|
18
40
|
|
19
41
|
def searches(raw_data, scope_name)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Utilities
|
5
|
+
module Utilities
|
6
|
+
# All Searches Query Parameters
|
7
|
+
module SearchQueryParameters
|
8
|
+
module_function
|
9
|
+
|
10
|
+
# https://app.swaggerhub.com/apis-docs/Crunchbase/crunchbase-enterprise_api/1.0.1#/Search/post_searches_people
|
11
|
+
#
|
12
|
+
# Search Query Parameters
|
13
|
+
#
|
14
|
+
# field_ids: array of field_id strings
|
15
|
+
# Fields to include as columns in the search result entities
|
16
|
+
# query: Search query to perform on the designated entity
|
17
|
+
# order: (field_id, sort, nulls)
|
18
|
+
# Order in which the search results should be returned
|
19
|
+
# limit: integer
|
20
|
+
# Number of rows to return. Default is 100, min is 1, max is 1000.
|
21
|
+
# before_id: string($uuid)
|
22
|
+
# Used to paginate search results to the previous page.
|
23
|
+
# before_id should be the uuid of the first item in the current page. May not be provided simultaneously with after_id.
|
24
|
+
# after_id: string($uuid)
|
25
|
+
# Used to paginate search results to the next page.
|
26
|
+
# after_id should be the uuid of the last item in the current page. May not be provided simultaneously with before_id.
|
27
|
+
def query_parameters(args)
|
28
|
+
params = {
|
29
|
+
'field_ids' => %w[
|
30
|
+
uuid
|
31
|
+
created_at
|
32
|
+
updated_at
|
33
|
+
] + (args[:field_ids] || []).uniq,
|
34
|
+
'order' => [
|
35
|
+
{
|
36
|
+
'field_id' => 'updated_at',
|
37
|
+
'sort' => (args[:sort] || 'desc'),
|
38
|
+
'nulls' => 'last'
|
39
|
+
}
|
40
|
+
],
|
41
|
+
'limit' => args[:limit] || 1000
|
42
|
+
}
|
43
|
+
|
44
|
+
unless args[:date].nil?
|
45
|
+
params.merge!(
|
46
|
+
'query' => [
|
47
|
+
{
|
48
|
+
'type' => 'predicate',
|
49
|
+
'field_id' => 'updated_at',
|
50
|
+
'operator_id' => 'gte',
|
51
|
+
'values' => [
|
52
|
+
args[:date]
|
53
|
+
]
|
54
|
+
}
|
55
|
+
]
|
56
|
+
)
|
57
|
+
end
|
58
|
+
params.merge!('before_id' => args[:before_id]) unless args[:before_id].nil?
|
59
|
+
params.merge!('after_id' => args[:after_id]) unless args[:after_id].nil?
|
60
|
+
params
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,335 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Utilities
|
5
|
+
module Utilities
|
6
|
+
# Veriables
|
7
|
+
module Veriables
|
8
|
+
# Description of operators
|
9
|
+
QUERY_OPERATORS = {
|
10
|
+
'blank' => 'Blank',
|
11
|
+
'eq' => 'Equal',
|
12
|
+
'not_eq' => 'Not equal',
|
13
|
+
'gt' => 'Greater than',
|
14
|
+
'gte' => 'Greater than or equal',
|
15
|
+
'lt' => 'Less than',
|
16
|
+
'lte' => 'Less than or equal',
|
17
|
+
'starts' => 'Starts',
|
18
|
+
'contains' => 'Contains',
|
19
|
+
'between' => 'Between',
|
20
|
+
'includes' => 'Includes',
|
21
|
+
'not_includes' => 'Does not include',
|
22
|
+
'includes_all' => 'Includes all',
|
23
|
+
'not_includes_all' => 'Does not include all'
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
COMPANY_TYPES = {
|
27
|
+
'for_profit' => 'For Profit',
|
28
|
+
'non_profit' => 'Non-profit'
|
29
|
+
}.freeze
|
30
|
+
|
31
|
+
FACET_IDS = {
|
32
|
+
'company' => 'Company',
|
33
|
+
'investor' => 'Investor',
|
34
|
+
'school' => 'School'
|
35
|
+
}.freeze
|
36
|
+
|
37
|
+
IPO_STATUS = {
|
38
|
+
'delisted' => 'Delisted',
|
39
|
+
'private' => 'Private',
|
40
|
+
'public' => 'Public'
|
41
|
+
}.freeze
|
42
|
+
|
43
|
+
FUNDING_STAGES = {
|
44
|
+
'early_stage_venture' => 'Early Stage Venture',
|
45
|
+
'ipo' => 'IPO',
|
46
|
+
'late_stage_venture' => 'Late Stage Venture',
|
47
|
+
'm_and_a' => 'M&A',
|
48
|
+
'private_equity' => 'Private Equity',
|
49
|
+
'seed' => 'Seed'
|
50
|
+
}.freeze
|
51
|
+
|
52
|
+
FUNDING_TYPES = {
|
53
|
+
'angel' => 'Angel',
|
54
|
+
'convertible_note' => 'Convertible Note',
|
55
|
+
'corporate_round' => 'Corporate Round',
|
56
|
+
'debt_financing' => 'Debt Financing',
|
57
|
+
'equity_crowdfunding' => 'Equity Crowdfunding',
|
58
|
+
'grant' => 'Grant',
|
59
|
+
'initial_coin_offering' => 'Initial Coin Offering',
|
60
|
+
'non_equity_assistance' => 'Non-equity Assistance',
|
61
|
+
'post_ipo_debt' => 'Post-IPO Debt',
|
62
|
+
'post_ipo_equity' => 'Post-IPO Equity',
|
63
|
+
'post_ipo_secondary' => 'Post-IPO Secondary',
|
64
|
+
'pre_seed' => 'Pre-Seed',
|
65
|
+
'private_equity' => 'Private Equity',
|
66
|
+
'product_crowdfunding' => 'Product Crowdfunding',
|
67
|
+
'secondary_market' => 'Secondary Market',
|
68
|
+
'seed' => 'Seed',
|
69
|
+
'series_a' => 'Series A',
|
70
|
+
'series_b' => 'Series B',
|
71
|
+
'series_c' => 'Series C',
|
72
|
+
'series_d' => 'Series D',
|
73
|
+
'series_e' => 'Series E',
|
74
|
+
'series_f' => 'Series F',
|
75
|
+
'series_g' => 'Series G',
|
76
|
+
'series_h' => 'Series H',
|
77
|
+
'series_i' => 'Series I',
|
78
|
+
'series_j' => 'Series J',
|
79
|
+
'series_unknown' => 'Venture - Series Unknown',
|
80
|
+
'undisclosed' => 'Undisclosed'
|
81
|
+
}.freeze
|
82
|
+
|
83
|
+
CURRENCY_ENUM = %w[
|
84
|
+
AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD
|
85
|
+
BIF BMD BND BOB BRL BSD BTN BWP BYN BYR BZD CAD CDF CHF CLF
|
86
|
+
CLP CNY COP CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB
|
87
|
+
EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG
|
88
|
+
HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW
|
89
|
+
KRW KWD KYD KZT LAK LBP LKR LRD LSL LTL LVL LYD MAD MDL MGA
|
90
|
+
MKD MMK MNT MOP MRO MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK
|
91
|
+
NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF
|
92
|
+
SAR SBD SCR SDG SEK SGD SHP SKK SLL SOS SRD SSP STD SVC SYP
|
93
|
+
SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD UYU UZS
|
94
|
+
VEF VND VUV WST XAF XAG XAU XBA XBB XBC XBD XCD XDR XOF XPD
|
95
|
+
XPF XPT YER ZAR ZMK ZMW xts
|
96
|
+
].freeze
|
97
|
+
|
98
|
+
DATE_PRECISIONS = %w[none year month day].freeze
|
99
|
+
|
100
|
+
LAYOUT_IDS = {
|
101
|
+
'default' => 'Default Layout',
|
102
|
+
'investor' => 'Investor Layout',
|
103
|
+
'school' => 'School Layout'
|
104
|
+
}.freeze
|
105
|
+
|
106
|
+
NUM_EMPLOYEES_ENUM = {
|
107
|
+
'c_00001_00010' => '1-10',
|
108
|
+
'c_00011_00050' => '11-50',
|
109
|
+
'c_00051_00100' => '51-100',
|
110
|
+
'c_00101_00250' => '101-250',
|
111
|
+
'c_00251_00500' => '251-500',
|
112
|
+
'c_00501_01000' => '501-1000',
|
113
|
+
'c_01001_05000' => '1001-5000',
|
114
|
+
'c_05001_10000' => '5001-10000',
|
115
|
+
'c_10001_max' => '10001+'
|
116
|
+
}.freeze
|
117
|
+
|
118
|
+
OPERATING_STATUS = {
|
119
|
+
'active' => 'Active',
|
120
|
+
'closed' => 'Closed'
|
121
|
+
}.freeze
|
122
|
+
|
123
|
+
PROGRAM_TYPES = {
|
124
|
+
'on_site' => 'On-Site',
|
125
|
+
'online' => 'Online'
|
126
|
+
}.freeze
|
127
|
+
|
128
|
+
REVENUE_RANGES = {
|
129
|
+
'r_00000000' => 'Less than $1M',
|
130
|
+
'r_00001000' => '$1M to $10M',
|
131
|
+
'r_00010000' => '$10M to $50M',
|
132
|
+
'r_00050000' => '$50M to $100M',
|
133
|
+
'r_00100000' => '$100M to $500M',
|
134
|
+
'r_00500000' => '$500M to $1B',
|
135
|
+
'r_01000000' => '$1B to $10B',
|
136
|
+
'r_10000000' => '$10B+'
|
137
|
+
}.freeze
|
138
|
+
|
139
|
+
SCHOOL_METHODS = {
|
140
|
+
'on_compus' => 'On Campus',
|
141
|
+
'online' => 'Online',
|
142
|
+
'online_and_on_campus' => 'Online and On Campus'
|
143
|
+
}.freeze
|
144
|
+
|
145
|
+
SCHOOL_METHODS = {
|
146
|
+
'bootcamp' => 'Bootcamp',
|
147
|
+
'community_college' => 'Community College',
|
148
|
+
'four_year_university' => 'Four Year University',
|
149
|
+
'graduate_university' => 'Graduate University',
|
150
|
+
'high_school' => 'High School',
|
151
|
+
'trade_school' => 'Trade School',
|
152
|
+
'two_year_university' => 'Two Year University'
|
153
|
+
}.freeze
|
154
|
+
|
155
|
+
SCHOOL_TYPES = {
|
156
|
+
'for_profit_private' => 'Private',
|
157
|
+
'non_profit_private' => 'Private (Non-Profit)',
|
158
|
+
'public' => 'Public'
|
159
|
+
}.freeze
|
160
|
+
|
161
|
+
STATUS = {
|
162
|
+
'closed' => 'Closed',
|
163
|
+
'ipo' => 'IPO',
|
164
|
+
'operating' => 'Operating',
|
165
|
+
'was_acquired' => 'Was Acquired'
|
166
|
+
}.freeze
|
167
|
+
|
168
|
+
STOCK_EXCHANGE_SYMBOLS = {
|
169
|
+
'adx' => 'ADX - Abu Dhabi Securities Exchange',
|
170
|
+
'afx' => 'AFX - Afghanistan Stock Exchange',
|
171
|
+
'altx' => 'ALTX - ALTX East Africa Exchange',
|
172
|
+
'amex' => 'AMEX - American Stock Exchange',
|
173
|
+
'ams' => 'AMS - Euronext Amsterdam',
|
174
|
+
'amx' => 'AMX - Armenia Securities Exchange',
|
175
|
+
'asce' => 'ASCE - Abuja Securities and Commodities Exchange',
|
176
|
+
'asx' => 'ASX - Australian Securities Exchange',
|
177
|
+
'ath' => 'ATH - Athens Stock Exchange',
|
178
|
+
'bcba' => 'BCBA - Buenos Aires Stock Exchange',
|
179
|
+
'bdp' => 'BDP - Budapest Stock Exchange',
|
180
|
+
'belex' => 'BELEX - Belgrade Stock Exchange',
|
181
|
+
'ber' => 'BER - Berliner Börse',
|
182
|
+
'bfb' => 'BFB - Baku Stock Exchange',
|
183
|
+
'bit' => 'BIT - Italian Stock Exchange',
|
184
|
+
'bkk' => 'BKK - Thailand Stock Exchange',
|
185
|
+
'blse' => 'BLSE - Banja Luka Stock Exchange',
|
186
|
+
'bme' => 'BME - Madrid Stock Exchange',
|
187
|
+
'bmv' => 'BMV - Mexican Stock Exchange',
|
188
|
+
'bom' => 'BOM - Bombay Stock Exchange',
|
189
|
+
'brvm' => 'BRVM - Regional Securities Exchange SA',
|
190
|
+
'bse' => 'BSE - Bulgarian Stock Exchange',
|
191
|
+
'bse_lb' => 'BSE - Beirut Stock Exchange',
|
192
|
+
'bsse' => 'BSSE - Bratislava Stock Exchange',
|
193
|
+
'bsx' => 'BSX - Bermuda Stock Exchange',
|
194
|
+
'bvb' => 'BVB - Bucharest Stock Exchange',
|
195
|
+
'bvc' => 'BVC - Colombian Stock Exchange',
|
196
|
+
'bvfb' => 'BVFB - Belarusian Currency and Stock Exchange',
|
197
|
+
'bvm' => 'BVM - Montevideo Stock Exchange',
|
198
|
+
'bvmf' => 'B3 - Brazil Stock Exchange and OTC Market',
|
199
|
+
'bvmt' => 'BVMT - Tunis Stock Exchange',
|
200
|
+
'bx' => 'BX - Berne Stock Exchange',
|
201
|
+
'cas' => 'CAS - Casablanca Stock Exchange',
|
202
|
+
'cise' => 'CISE - Channel Islands Stock Exchange',
|
203
|
+
'cnsx' => 'CNSX - Canadian National Stock Exchange',
|
204
|
+
'col' => 'COL - Colombo Stock Exchange',
|
205
|
+
'cph' => 'CPH - Copenhagen Stock Exchange',
|
206
|
+
'cse' => 'CSE - Canadian Securities Exchange',
|
207
|
+
'cse_cy' => 'CSE - Cyprus Stock Exchange',
|
208
|
+
'csx' => 'CSX - Cambodia Securities Exchange',
|
209
|
+
'cve' => 'TSX-V - Toronto TSX Venture Exchange',
|
210
|
+
'dfm' => 'DFM - Dubai Financial Market',
|
211
|
+
'dse' => 'DSE - Dhaka Stock Exchange',
|
212
|
+
'dsx' => 'DSX - Douala Stock Exchange',
|
213
|
+
'dus' => 'DUS - Börse Düsseldorf',
|
214
|
+
'ebr' => 'EBR - Euronext Brussels',
|
215
|
+
'egx' => 'EGX - Egypt Stock Exchange',
|
216
|
+
'eli' => 'ELI - Euronext Lisbon',
|
217
|
+
'epa' => 'EPA - Euronext Paris',
|
218
|
+
'etr' => 'ETR - Deutsche Börse XETRA',
|
219
|
+
'eurex' => 'EUREX - Eurex Exchange',
|
220
|
+
'fra' => 'FRA - Frankfurt Stock Exchange',
|
221
|
+
'fwb' => 'FWB - Börse Frankfurt Stock Exchange',
|
222
|
+
'gha' => 'GHA - Ghana Stock Exchange',
|
223
|
+
'gsx' => 'GSX - Georgian Stock Exchange',
|
224
|
+
'gsx_gi' => 'GSX - Gibraltar Stock Exchange',
|
225
|
+
'hel' => 'HEL - Helsinki Stock Exchange',
|
226
|
+
'hkg' => 'HKG - Hong Kong Stock Exchange',
|
227
|
+
'hnx' => 'HNX - Hanoi Stock Exchange',
|
228
|
+
'hose' => 'HOSE - Ho Chi Minh Stock Exchange',
|
229
|
+
'ice' => 'ICE - Iceland Stock Exchange',
|
230
|
+
'idx' => 'IDX - Indonesia Stock Exchange',
|
231
|
+
'iex' => 'IEX - Investors Exchange',
|
232
|
+
'ifb' => 'IFB - Iran Fara Bourse',
|
233
|
+
'ime' => 'IME - Iran Mercantile Exchange',
|
234
|
+
'irenex' => 'IRENEX - Iran Energy Exchange',
|
235
|
+
'ise' => 'ISE - Irish Stock Exchange',
|
236
|
+
'ist' => 'IST - Istanbul Stock Exchange',
|
237
|
+
'isx' => 'ISX - Iraq Stock Exchange',
|
238
|
+
'jp' => 'JP - Japan Exchange',
|
239
|
+
'jsc' => 'JSC - Belarusian Currency and Stock Exchange',
|
240
|
+
'jse' => 'JSE - Johannesburg Stock Exchange',
|
241
|
+
'jse_jam' => 'JSE - Jamaica Stock Exchange',
|
242
|
+
'kase' => 'KASE - Kazakhstan Stock Exchange',
|
243
|
+
'klse' => 'KLSE - Malaysia Stock Exchange',
|
244
|
+
'kosdaq' => 'KOSDAQ - Korean Securities Dealers Automated Quotations',
|
245
|
+
'krx' => 'KRX - Korea Stock Exchange',
|
246
|
+
'kse' => 'KSE - Kuwait Stock Exchange',
|
247
|
+
'lje' => 'LJE - Ljubljana Stock Exchange',
|
248
|
+
'lse' => 'LSE - London Stock Exchange',
|
249
|
+
'lsm' => 'LSM - Libyan Stock Market',
|
250
|
+
'lsx' => 'LSX - Lao Securities Exchange',
|
251
|
+
'luse' => 'LuSE - Lusaka Securities Exchange',
|
252
|
+
'luxse' => 'LuxSE - Luxembourg Stock Exchange',
|
253
|
+
'mal' => 'MAL - Malta Stock Exchange',
|
254
|
+
'mcx' => 'MCX - Multi Commodity Exchange of India',
|
255
|
+
'meff' => 'MEFF - Mercado Spanish Financial Futures Market',
|
256
|
+
'mnse' => 'MNSE - Montenegro Stock Exchange',
|
257
|
+
'moex' => 'MOEX - Moscow Exchange',
|
258
|
+
'mse' => 'MSE - Metropolitan Stock Exchange',
|
259
|
+
'mse_md' => 'MSE - Moldova Stock Exchange',
|
260
|
+
'mse_mk' => 'MSE - Macedonian Stock Exchange',
|
261
|
+
'msei' => 'MSEI - Metropolitan Stock Exchange of India',
|
262
|
+
'msm' => 'MSM - Muscat Securities Market',
|
263
|
+
'mun' => 'MUN - Börse München',
|
264
|
+
'nasdaq' => 'NASDAQ',
|
265
|
+
'nbo' => 'NSE - Nairobi Securities Exchange',
|
266
|
+
'neeq' => 'NEEQ - National Equities Exchange and Quotations',
|
267
|
+
'nepse' => 'NEPSE - Nepal Stock Exchange',
|
268
|
+
'nex' => 'NEX - NEX Exchange',
|
269
|
+
'ngm' => 'NGM - Nordic Growth Market Exchange',
|
270
|
+
'nig' => 'NIG - Nigerian Stock Exchange',
|
271
|
+
'notc' => 'NOTC - Norwegian OTC',
|
272
|
+
'npex' => 'NPEX - NPEX Stock Exchange',
|
273
|
+
'nse' => 'NSE - National Stock Exchange of India',
|
274
|
+
'nsx' => 'NSX - National Stock Exchange of Australia',
|
275
|
+
'nyse' => 'NYSE - New York Stock Exchange',
|
276
|
+
'nysearca' => 'NYSEARCA - NYSE Arca',
|
277
|
+
'nysemkt' => 'NYSEAMERICAN - NYSE American',
|
278
|
+
'nze' => 'NZE - New Zealand Stock Exchange',
|
279
|
+
'ose' => 'OSE - Oslo Stock Exchange',
|
280
|
+
'otcbb' => 'OTCBB - FINRA OTC Bulletin Board',
|
281
|
+
'otcpink' => 'OTC Pink',
|
282
|
+
'otcqb' => 'OTCQB',
|
283
|
+
'otcqx' => 'OTCQX',
|
284
|
+
'pdex' => 'PDEx - Philippine Dealing Exchange',
|
285
|
+
'pex' => 'PEX - Palestine Exchange',
|
286
|
+
'pfts' => 'PFTS - PFTS Ukraine Stock Exchange',
|
287
|
+
'pomsox' => 'POMSoX - Port Moresby Stock Exchange',
|
288
|
+
'prg' => 'PRA - Prague Stock Exchange',
|
289
|
+
'pse' => 'PSE - Philippine Stock Exchange',
|
290
|
+
'psx' => 'PSX - Pakistan Stock Exchange',
|
291
|
+
'qse' => 'QSE - Qatar Stock Exchange',
|
292
|
+
'rfb' => 'RFB - Riga Stock Exchange',
|
293
|
+
'rse' => 'RSE - Rwanda Stock Exchange',
|
294
|
+
'rsebl' => 'RSEBL - Royal Securities Exchange of Bhutan',
|
295
|
+
'sase' => 'SASE - Sarajevo Stock Exchange',
|
296
|
+
'sbx' => 'SBX - BX Swiss',
|
297
|
+
'sehk' => 'SEHK - The Stock Exchange of Hong Kong',
|
298
|
+
'sem' => 'SEM - Stock Exchange of Mauritius',
|
299
|
+
'sgbv' => 'SGBV - Algiers Stock Exchange',
|
300
|
+
'sgx' => 'SGX - Singapore Stock Exchange',
|
301
|
+
'six' => 'SIX - SIX Swiss Exchange',
|
302
|
+
'spbex' => 'SPBEX - Saint Petersburg Stock Exchange',
|
303
|
+
'spse' => 'SPSE - South Pacific Stock Exchange',
|
304
|
+
'sse' => 'SSE - Shanghai Stock Exchange',
|
305
|
+
'ssx' => 'SSX - Sydney Stock Exchange',
|
306
|
+
'sto' => 'STO - Stockholm Stock Exchange',
|
307
|
+
'stu' => 'STU - Börse Stuttgart',
|
308
|
+
'swx' => 'SWX - SIX Swiss Exchange',
|
309
|
+
'szse' => 'SZSE - Shenzhen Stock Exchange',
|
310
|
+
'tadawul' => 'Tadawul - Saudi Stock Exchange',
|
311
|
+
'tal' => 'TSE - Tallinn Stock Exchange',
|
312
|
+
'tfex' => 'TFEX - Thailand Futures Exchange',
|
313
|
+
'tise' => 'TISE - The International Stock Exchange',
|
314
|
+
'tlv' => 'TLV - Tel Aviv Stock Exchange',
|
315
|
+
'tpe' => 'TWSE - Taiwan Stock Exchange',
|
316
|
+
'tse_al' => 'TSE - Tirana Stock Exchange',
|
317
|
+
'tse_ir' => 'TSE - Tehran Stock Exchange',
|
318
|
+
'tsec' => 'TWO - Taiwan OTC Exchange',
|
319
|
+
'tsx' => 'TSX - Toronto Stock Exchange',
|
320
|
+
'ttse' => 'TTSE - Trinidad and Tobago Stock Exchange',
|
321
|
+
'tyo' => 'TYO - Tokyo Stock Exchange',
|
322
|
+
'use' => 'USE - Uganda Securities Exchange',
|
323
|
+
'ux' => 'UX - Ukrainian Exchange',
|
324
|
+
'vie' => 'VIE - Vienna Stock Exchange',
|
325
|
+
'vmf' => 'VMF - Faroese Securities Market',
|
326
|
+
'vse' => 'VSE - Vancouver Stock Exchange',
|
327
|
+
'wse' => 'WSE - Warsaw Stock Exchange',
|
328
|
+
'ysx' => 'YSX - Yangon Stock Exchange',
|
329
|
+
'zamace' => 'ZAMACE - Zambian Commodity Exchange',
|
330
|
+
'zse' => 'ZSE - Zimbabwe Stock Exchange',
|
331
|
+
'zse_hr' => 'ZSE - Zagreb Stock Exchange'
|
332
|
+
}.freeze
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|
data/lib/crunchbase/version.rb
CHANGED
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
|
+
version: 0.1.2
|
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-
|
11
|
+
date: 2020-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- bin/setup
|
133
133
|
- crunchbase4.gemspec
|
134
134
|
- lib/crunchbase.rb
|
135
|
+
- lib/crunchbase/autocompletes/client.rb
|
135
136
|
- lib/crunchbase/client.rb
|
136
137
|
- lib/crunchbase/config.rb
|
137
138
|
- lib/crunchbase/entities.rb
|
@@ -139,22 +140,28 @@ files:
|
|
139
140
|
- lib/crunchbase/errors.rb
|
140
141
|
- lib/crunchbase/models.rb
|
141
142
|
- lib/crunchbase/models/acquisition.rb
|
143
|
+
- lib/crunchbase/models/autocomplete_entity.rb
|
142
144
|
- lib/crunchbase/models/category.rb
|
143
145
|
- lib/crunchbase/models/category_group.rb
|
144
146
|
- lib/crunchbase/models/entity.rb
|
145
147
|
- lib/crunchbase/models/funding_round.rb
|
146
148
|
- lib/crunchbase/models/investment.rb
|
149
|
+
- lib/crunchbase/models/ipo.rb
|
147
150
|
- lib/crunchbase/models/organization.rb
|
148
151
|
- lib/crunchbase/models/person.rb
|
149
152
|
- lib/crunchbase/models/press_reference.rb
|
150
153
|
- lib/crunchbase/searches.rb
|
151
154
|
- lib/crunchbase/searches/client.rb
|
152
155
|
- lib/crunchbase/utilities.rb
|
156
|
+
- lib/crunchbase/utilities/autocomplete.rb
|
153
157
|
- lib/crunchbase/utilities/cb_model.rb
|
158
|
+
- lib/crunchbase/utilities/deleted_entities.rb
|
154
159
|
- lib/crunchbase/utilities/entity_endpoints.rb
|
155
160
|
- lib/crunchbase/utilities/request.rb
|
156
161
|
- lib/crunchbase/utilities/response.rb
|
157
162
|
- lib/crunchbase/utilities/search_endpoints.rb
|
163
|
+
- lib/crunchbase/utilities/search_query_parameters.rb
|
164
|
+
- lib/crunchbase/utilities/veriables.rb
|
158
165
|
- lib/crunchbase/version.rb
|
159
166
|
homepage: https://github.com/ekohe/crunchbase4
|
160
167
|
licenses:
|