crunchbase_v2 0.0.1
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.
- data/.gitignore +25 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.rdoc +88 -0
- data/Rakefile +7 -0
- data/crunchbase.gemspec +24 -0
- data/lib/crunchbase.rb +36 -0
- data/lib/crunchbase/acquisition.rb +66 -0
- data/lib/crunchbase/api.rb +153 -0
- data/lib/crunchbase/board_members_and_advisor.rb +23 -0
- data/lib/crunchbase/category.rb +22 -0
- data/lib/crunchbase/cb_entity.rb +70 -0
- data/lib/crunchbase/competitor.rb +25 -0
- data/lib/crunchbase/crunch_exception.rb +6 -0
- data/lib/crunchbase/current_team.rb +26 -0
- data/lib/crunchbase/customer.rb +21 -0
- data/lib/crunchbase/founder.rb +21 -0
- data/lib/crunchbase/funding_round.rb +69 -0
- data/lib/crunchbase/headquarter.rb +27 -0
- data/lib/crunchbase/image.rb +21 -0
- data/lib/crunchbase/investment.rb +33 -0
- data/lib/crunchbase/ipo.rb +57 -0
- data/lib/crunchbase/location.rb +24 -0
- data/lib/crunchbase/new_item.rb +22 -0
- data/lib/crunchbase/office.rb +28 -0
- data/lib/crunchbase/organization.rb +246 -0
- data/lib/crunchbase/past_team.rb +29 -0
- data/lib/crunchbase/person.rb +31 -0
- data/lib/crunchbase/primary_image.rb +21 -0
- data/lib/crunchbase/product.rb +78 -0
- data/lib/crunchbase/relationship.rb +17 -0
- data/lib/crunchbase/search.rb +45 -0
- data/lib/crunchbase/search_result.rb +11 -0
- data/lib/crunchbase/sub_organization.rb +21 -0
- data/lib/crunchbase/version.rb +3 -0
- data/lib/crunchbase/website.rb +20 -0
- data/spec/apikey.example.yml +2 -0
- data/spec/bootstrap.rb +9 -0
- data/spec/crunchbase/acquisition_spec.rb +26 -0
- data/spec/crunchbase/api_spec.rb +8 -0
- data/spec/crunchbase/board_members_and_advisor_spec.rb +16 -0
- data/spec/crunchbase/category_spec.rb +25 -0
- data/spec/crunchbase/competitor_spec.rb +19 -0
- data/spec/crunchbase/current_team_spec.rb +17 -0
- data/spec/crunchbase/customer_spec.rb +20 -0
- data/spec/crunchbase/founder_spec.rb +20 -0
- data/spec/crunchbase/funding_round_spec.rb +26 -0
- data/spec/crunchbase/headquarter_spec.rb +17 -0
- data/spec/crunchbase/investment_spec.rb +20 -0
- data/spec/crunchbase/ipo_spec.rb +29 -0
- data/spec/crunchbase/location_spec.rb +16 -0
- data/spec/crunchbase/new_item_spec.rb +33 -0
- data/spec/crunchbase/office_spec.rb +19 -0
- data/spec/crunchbase/organization_spec.rb +62 -0
- data/spec/crunchbase/past_team_spec.rb +16 -0
- data/spec/crunchbase/person_spec.rb +23 -0
- data/spec/crunchbase/primary_image_spec.rb +21 -0
- data/spec/crunchbase/product_spec.rb +28 -0
- data/spec/crunchbase/search_result_spec.rb +16 -0
- data/spec/crunchbase/search_spec.rb +17 -0
- data/spec/crunchbase/sub_organization_spec.rb +21 -0
- data/spec/crunchbase/website_spec.rb +25 -0
- data/spec/fixtures/facebook-acquisition.js +82 -0
- data/spec/fixtures/facebook-funding-round.js +96 -0
- data/spec/fixtures/organization-facebook.js +1023 -0
- data/spec/fixtures/person-randi-zuckerberg.js +233 -0
- data/spec/spec_helper.rb +10 -0
- metadata +192 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
class Search
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
attr_reader :total_items, :per_page, :pages, :current_page,
|
8
|
+
:prev_page_url, :next_page_url, :sort_order, :results
|
9
|
+
|
10
|
+
alias :length :total_items
|
11
|
+
alias :size :total_items
|
12
|
+
alias :items :results
|
13
|
+
|
14
|
+
# Performs a Crunchbase search for query.
|
15
|
+
def self.find(query)
|
16
|
+
search(query)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.search(query, t='organizations')
|
20
|
+
query = { name: query } if query.kind_of?(String)
|
21
|
+
|
22
|
+
Search.new query, API.search(query, t), SearchResult
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(query, json, _model)
|
26
|
+
@query = query
|
27
|
+
@results = []
|
28
|
+
@total_items = json['paging']['total_items']
|
29
|
+
@per_page = json['paging']['items_per_page']
|
30
|
+
@pages = json['paging']['number_of_pages']
|
31
|
+
@current_page = json['paging']['current_page']
|
32
|
+
@prev_page_url = json['paging']['prev_page_url']
|
33
|
+
@next_page_url = json['paging']['next_page_url']
|
34
|
+
@sort_order = json['paging']['sort_order']
|
35
|
+
|
36
|
+
populate_results(json, _model)
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def populate_results(json, _model)
|
41
|
+
@results = json["items"].map{|r| _model.new(r)}
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# http://api.crunchbase.com/v/2/organization/facebook/sub_organizations
|
4
|
+
|
5
|
+
module Crunchbase
|
6
|
+
class SubOrganization < CBEntity
|
7
|
+
RESOURCE_LIST = 'sub_organizations'
|
8
|
+
|
9
|
+
attr_reader :type_name, :name, :path, :permalink, :created_at, :updated_at
|
10
|
+
|
11
|
+
def initialize(json)
|
12
|
+
@type_name = json['type']
|
13
|
+
@name = json['name']
|
14
|
+
@path = json['path']
|
15
|
+
@permalink = json['path'] && json['path'].gsub('organization/', '')
|
16
|
+
@created_at = Time.at(json['created_at']).utc
|
17
|
+
@updated_at = Time.at(json['updated_at']).utc
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# http://api.crunchbase.com/v/2/organization/facebook/websites
|
4
|
+
|
5
|
+
module Crunchbase
|
6
|
+
class Website < CBEntity
|
7
|
+
RESOURCE_NAME = 'website'
|
8
|
+
RESOURCE_LIST = 'websites'
|
9
|
+
|
10
|
+
attr_reader :url, :type_name, :title, :created_at, :updated_at
|
11
|
+
|
12
|
+
def initialize(json)
|
13
|
+
@url = json['url']
|
14
|
+
@type_name = json['type']
|
15
|
+
@title = json['title']
|
16
|
+
@created_at = Time.at(json['created_at']).utc
|
17
|
+
@updated_at = Time.at(json['updated_at']).utc
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/spec/bootstrap.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Acquisition do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_acquisitions = Acquisition.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_acquisitions.per_page.should == 1000
|
13
|
+
@all_acquisitions.current_page.should == 1
|
14
|
+
@all_acquisitions.size.should == 49
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should pull from web api" do
|
19
|
+
acquisition = Acquisition.get("7a3d7915ed43073c0e4b5b0d7601def8")
|
20
|
+
|
21
|
+
acquisition.name.should == "Acquisition"
|
22
|
+
acquisition.permalink.should == "7a3d7915ed43073c0e4b5b0d7601def8"
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe BoardMembersAndAdvisor do
|
5
|
+
describe "advanced indexing" do
|
6
|
+
before(:all) do
|
7
|
+
@all_board_members_and_advisors = BoardMembersAndAdvisor.lists_for_permalink("facebook")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should pull from web api" do
|
11
|
+
@all_board_members_and_advisors.per_page.should == 1000
|
12
|
+
@all_board_members_and_advisors.current_page.should == 1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Category do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_categories = Category.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_categories.per_page.should == 1000
|
13
|
+
@all_categories.current_page.should == 1
|
14
|
+
@all_categories.size.should == 7
|
15
|
+
@all_categories.items.count.should == 7
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it "return categories lists" do
|
20
|
+
results = Category.list(1)
|
21
|
+
results.per_page.should == 1000
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Competitor do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_competitors = Competitor.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_competitors.per_page.should == 1000
|
13
|
+
@all_competitors.current_page.should == 1
|
14
|
+
@all_competitors.size.should == 9
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe CurrentTeam do
|
5
|
+
describe "advanced indexing" do
|
6
|
+
before(:all) do
|
7
|
+
@all_current_teams = CurrentTeam.lists_for_permalink("facebook")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should pull from web api" do
|
11
|
+
@all_current_teams.per_page.should == 1000
|
12
|
+
@all_current_teams.current_page.should == 1
|
13
|
+
@all_current_teams.size.should == 137
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Customer do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_customers = Customer.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_customers.per_page.should == 1000
|
13
|
+
@all_customers.current_page.should == 1
|
14
|
+
@all_customers.size.should == 1
|
15
|
+
@all_customers.items.count.should == 1
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Founder do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_founders = Founder.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_founders.per_page.should == 1000
|
13
|
+
@all_founders.current_page.should == 1
|
14
|
+
@all_founders.size.should == 5
|
15
|
+
@all_founders.items.count.should == 5
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe FundingRound do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_funding_rounds = FundingRound.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "check the return results is correct" do
|
12
|
+
@all_funding_rounds.per_page.should == 1000
|
13
|
+
@all_funding_rounds.current_page.should == 1
|
14
|
+
@all_funding_rounds.size.should == 11
|
15
|
+
@all_funding_rounds.items.count.should == 11
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should pull from web api" do
|
20
|
+
funding_round = FundingRound.get("37bd05f961af726ba3c1b279da842805")
|
21
|
+
|
22
|
+
funding_round.permalink.should == '37bd05f961af726ba3c1b279da842805'
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Headquarter do
|
5
|
+
describe "advanced indexing" do
|
6
|
+
before(:all) do
|
7
|
+
@all_headquarters = Headquarter.lists_for_permalink("facebook")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should pull from web api" do
|
11
|
+
@all_headquarters.per_page.should == 1000
|
12
|
+
@all_headquarters.current_page.should == 1
|
13
|
+
@all_headquarters.items.count.should == 1
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Investment do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_investments = Investment.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_investments.per_page.should == 1000
|
13
|
+
@all_investments.current_page.should == 1
|
14
|
+
@all_investments.size.should == 3
|
15
|
+
@all_investments.items.count.should == 3
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Ipo do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_ipos = Ipo.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
@all_ipos.per_page.should == 1000
|
13
|
+
@all_ipos.current_page.should == 1
|
14
|
+
@all_ipos.size.should == 3
|
15
|
+
@all_ipos.items.count.should == 3
|
16
|
+
|
17
|
+
puts @all_ipos.items.inspect
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should pull from web api" do
|
22
|
+
ipo = Ipo.get("a3bc391490d52ba8529d1cfc20550a87")
|
23
|
+
|
24
|
+
ipo.permalink.should == 'a3bc391490d52ba8529d1cfc20550a87'
|
25
|
+
ipo.funded_companies[0].name.should == 'Facebook'
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe Location do
|
5
|
+
|
6
|
+
it "return location lists" do
|
7
|
+
results = Location.list(1)
|
8
|
+
|
9
|
+
results.per_page.should == 1000
|
10
|
+
results.current_page.should == 1
|
11
|
+
|
12
|
+
puts results.items.first(3).inspect
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
describe NewItem do
|
5
|
+
|
6
|
+
describe "advanced indexing" do
|
7
|
+
before(:all) do
|
8
|
+
@all_news = NewItem.lists_for_permalink("facebook")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should pull from web api" do
|
12
|
+
puts @all_news.items.first.title
|
13
|
+
puts @all_news.next_page_url
|
14
|
+
|
15
|
+
@all_news.per_page.should == 1000
|
16
|
+
@all_news.current_page.should == 1
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should get oranization all news list" do
|
20
|
+
@all_news.items.count.should == 3116
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "Fetched all news data paging" do
|
25
|
+
page = 4
|
26
|
+
second_news = NewItem.lists_for_permalink("facebook", {page: page})
|
27
|
+
|
28
|
+
second_news.next_page_url.should == nil
|
29
|
+
second_news.per_page.should == 1000
|
30
|
+
second_news.current_page.should == page
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|