crunchbase 0.3.0 → 0.4.0
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 +7 -0
- data/README.rdoc +6 -1
- data/lib/crunchbase.rb +4 -1
- data/lib/crunchbase/api.rb +7 -0
- data/lib/crunchbase/array_from_list.rb +9 -0
- data/lib/crunchbase/cb_object.rb +7 -3
- data/lib/crunchbase/company.rb +35 -9
- data/lib/crunchbase/financial_organization.rb +27 -7
- data/lib/crunchbase/image.rb +36 -0
- data/lib/crunchbase/investment.rb +7 -5
- data/lib/crunchbase/milestone.rb +33 -0
- data/lib/crunchbase/person.rb +22 -6
- data/lib/crunchbase/product.rb +17 -4
- data/lib/crunchbase/relationship.rb +2 -2
- data/lib/crunchbase/search.rb +17 -0
- data/lib/crunchbase/service_provider.rb +6 -3
- metadata +14 -114
- data/Gemfile +0 -9
- data/Gemfile.lock +0 -30
- data/Rakefile +0 -52
- data/VERSION +0 -1
- data/crunchbase.gemspec +0 -88
- data/spec/apikey.example.yml +0 -1
- data/spec/crunchbase/api_spec.rb +0 -50
- data/spec/crunchbase/company_spec.rb +0 -37
- data/spec/crunchbase/financial_organization_spec.rb +0 -29
- data/spec/crunchbase/person_spec.rb +0 -82
- data/spec/crunchbase/product_spec.rb +0 -35
- data/spec/crunchbase/search_result_spec.rb +0 -16
- data/spec/crunchbase/search_spec.rb +0 -65
- data/spec/crunchbase/service_provider_spec.rb +0 -22
- data/spec/fixtures/brad-fitzpatrick.js +0 -70
- data/spec/fixtures/cargurus.js +0 -178
- data/spec/fixtures/steve-jobs.js +0 -83
- data/spec/spec_helper.rb +0 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 75f6513e17d35d263ca659edccd32390cf2e69a8
|
4
|
+
data.tar.gz: 21e3fd611e361296911d0ca4dba27b2061852fca
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ceb82a4cdd8e27e6ece53db621c3e0b17122a4d60c7f46f9178a84d282e131d17828661eb2c25715651c471a0504e9e9df7c3628f5b4bfe906a1f6458e794613
|
7
|
+
data.tar.gz: 04e6e289b6b883676722495abe2406ce0a996e9bf505278a4b67f364d488c40d8d525f1f87e1e5fb172662d24bc27b9d6ff30eb2290720bcdd090ab38bc0201e
|
data/README.rdoc
CHANGED
@@ -36,7 +36,12 @@ the actual data.
|
|
36
36
|
Searching the Crunchbase is possible with the Search class.
|
37
37
|
|
38
38
|
s = Crunchbase::Search.find("widgets")
|
39
|
-
|
39
|
+
|
40
|
+
You can also search by location using the Location class. Searches can be by city,
|
41
|
+
state, zip, country-code, etc.
|
42
|
+
|
43
|
+
l = Crunchbase::Location.geo("San Francisco")
|
44
|
+
|
40
45
|
You can access the search results by treating the returned Search instance as
|
41
46
|
an array.
|
42
47
|
|
data/lib/crunchbase.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'crunchbase/api'
|
2
2
|
require 'crunchbase/cb_object'
|
3
3
|
require 'crunchbase/date_methods'
|
4
|
+
require 'crunchbase/array_from_list'
|
5
|
+
require 'crunchbase/image'
|
6
|
+
require 'crunchbase/milestone'
|
4
7
|
require 'crunchbase/company'
|
5
8
|
require 'crunchbase/financial_organization'
|
6
9
|
require 'crunchbase/investment'
|
@@ -17,5 +20,5 @@ require 'crunchbase/search_result'
|
|
17
20
|
require 'crunchbase/crunch_exception'
|
18
21
|
|
19
22
|
module Crunchbase
|
20
|
-
VERSION = "0.
|
23
|
+
VERSION = "0.4.0"
|
21
24
|
end
|
data/lib/crunchbase/api.rb
CHANGED
@@ -56,6 +56,13 @@ module Crunchbase
|
|
56
56
|
get_json_response(uri)
|
57
57
|
end
|
58
58
|
|
59
|
+
# Fetches URI for geographic search interface
|
60
|
+
def self.geo(query, page=1)
|
61
|
+
require "cgi"
|
62
|
+
uri = CB_URL + "search.js?geo=#{CGI.escape(query)}&page=#{page}"
|
63
|
+
get_json_response(uri)
|
64
|
+
end
|
65
|
+
|
59
66
|
# Searches for a permalink in a particular category.
|
60
67
|
def self.permalink(parameters, category)
|
61
68
|
require "cgi"
|
data/lib/crunchbase/cb_object.rb
CHANGED
@@ -9,12 +9,12 @@ module Crunchbase
|
|
9
9
|
|
10
10
|
# Returns an array of tags
|
11
11
|
def tags
|
12
|
-
@tag_list.respond_to?('split') ? @tag_list.split(
|
12
|
+
@tag_list.respond_to?('split') ? @tag_list.split(/,\s*/) : []
|
13
13
|
end
|
14
14
|
|
15
15
|
# Returns an array of aliases
|
16
16
|
def aliases
|
17
|
-
@alias_list.respond_to?('split') ? @alias_list.split(
|
17
|
+
@alias_list.respond_to?('split') ? @alias_list.split(/,\s*/) : []
|
18
18
|
end
|
19
19
|
|
20
20
|
# Factory method to return an instance from a permalink
|
@@ -24,10 +24,14 @@ module Crunchbase
|
|
24
24
|
return e
|
25
25
|
end
|
26
26
|
|
27
|
+
# Finds an entity by its name. Uses two HTTP requests; one to find the
|
28
|
+
# permalink, and another to request the actual entity.
|
27
29
|
def self.find(name)
|
28
30
|
get(API.permalink({name: name}, self::ENT_PLURAL)["permalink"])
|
29
31
|
end
|
30
32
|
|
33
|
+
# Requests a list of all entities of a given type. Returns the list as an
|
34
|
+
# array of EntityListItems.
|
31
35
|
def self.all
|
32
36
|
all = API.all(self::ENT_PLURAL).map do |ent|
|
33
37
|
ent["namespace"] = self::ENT_NAME
|
@@ -45,4 +49,4 @@ module Crunchbase
|
|
45
49
|
end
|
46
50
|
|
47
51
|
end
|
48
|
-
end
|
52
|
+
end
|
data/lib/crunchbase/company.rb
CHANGED
@@ -11,10 +11,11 @@ module Crunchbase
|
|
11
11
|
attr_reader :name, :permalink, :crunchbase_url, :homepage_url, :blog_url,
|
12
12
|
:blog_feed_url, :twitter_username, :category_code, :number_of_employees,
|
13
13
|
:deadpooled_url, :email_address, :phone_number, :description,
|
14
|
-
:created_at, :updated_at, :overview, :image, :
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
14
|
+
:created_at, :updated_at, :overview, :image, :competitions,
|
15
|
+
:total_money_raised, :funding_rounds, :acquisition, :acquisitions,
|
16
|
+
:offices, :ipo, :video_embeds, :screenshots, :external_links,
|
17
|
+
:deadpooled_year, :deadpooled_month, :deadpooled_day,
|
18
|
+
:founded_year, :founded_month, :founded_day
|
18
19
|
|
19
20
|
def initialize(json)
|
20
21
|
@name = json["name"]
|
@@ -41,29 +42,54 @@ module Crunchbase
|
|
41
42
|
@created_at = DateTime.parse(json["created_at"])
|
42
43
|
@updated_at = DateTime.parse(json["updated_at"])
|
43
44
|
@overview = json["overview"]
|
44
|
-
@image = json["image"]
|
45
|
+
@image = Image.create(json["image"])
|
45
46
|
@products_list = json["products"]
|
46
|
-
@
|
47
|
+
@relationships_list = json["relationships"]
|
47
48
|
@competitions = json["competitions"]
|
48
|
-
@
|
49
|
+
@providerships_list = json["providerships"]
|
49
50
|
@total_money_raised = json["total_money_raised"]
|
50
51
|
@funding_rounds = json["funding_rounds"]
|
51
|
-
@
|
52
|
+
@investments_list = json['investments']
|
52
53
|
@acquisition = json["acquisition"]
|
53
54
|
@acquisitions = json["acquisitions"]
|
54
55
|
@offices = json["offices"]
|
55
|
-
@
|
56
|
+
@milestones_list = json["milestones"]
|
56
57
|
@ipo = json["ipo"]
|
57
58
|
@video_embeds = json["video_embeds"]
|
58
59
|
@screenshots = json["screenshots"]
|
59
60
|
@external_links = json["external_links"]
|
60
61
|
end
|
62
|
+
|
63
|
+
def relationships
|
64
|
+
@relationships ||= Relationship.array_from_list(@relationships_list)
|
65
|
+
end
|
66
|
+
|
67
|
+
def providerships
|
68
|
+
@providerships ||= Relationship.array_from_list(@providerships_list)
|
69
|
+
end
|
70
|
+
|
71
|
+
def investments
|
72
|
+
@investments ||= Investment.array_from_list(@investments_list)
|
73
|
+
end
|
74
|
+
|
75
|
+
def milestones
|
76
|
+
@milestones ||= Milestone.array_from_list(@milestones_list)
|
77
|
+
end
|
78
|
+
|
79
|
+
def founded?
|
80
|
+
!!(@founded_year || @founded_month || @founded_day)
|
81
|
+
end
|
61
82
|
|
62
83
|
# Returns the date the company was founded, or nil if not provided.
|
63
84
|
def founded
|
64
85
|
@founded ||= date_from_components(@founded_year, @founded_month, @founded_day)
|
65
86
|
end
|
66
87
|
|
88
|
+
# Returns whether the company has a deadpooled date component
|
89
|
+
def deadpooled?
|
90
|
+
!!(@deadpooled_year || @deadpooled_month || @deadpooled_day)
|
91
|
+
end
|
92
|
+
|
67
93
|
# Returns the date the company was deadpooled, or nil if not provided.
|
68
94
|
def deadpooled
|
69
95
|
@deadpooled ||= date_from_components(@deadpooled_year, @deadpooled_month, @deadpooled_day)
|
@@ -11,8 +11,8 @@ module Crunchbase
|
|
11
11
|
attr_reader :name, :permalink, :crunchbase_url, :homepage_url, :blog_url,
|
12
12
|
:blog_feed_url, :twitter_username, :phone_number, :description,
|
13
13
|
:email_address, :number_of_employees, :created_at, :updated_at,
|
14
|
-
:overview, :image, :offices, :
|
15
|
-
:
|
14
|
+
:overview, :image, :offices, :funds, :video_embeds, :external_links,
|
15
|
+
:founded_year, :founded_month, :founded_day
|
16
16
|
|
17
17
|
def initialize(json)
|
18
18
|
@name = json['name']
|
@@ -34,17 +34,37 @@ module Crunchbase
|
|
34
34
|
@created_at = DateTime.parse(json["created_at"])
|
35
35
|
@updated_at = DateTime.parse(json["updated_at"])
|
36
36
|
@overview = json['overview']
|
37
|
-
@image = json['image']
|
37
|
+
@image = Image.create(json['image'])
|
38
38
|
@offices = json['offices']
|
39
|
-
@
|
40
|
-
@
|
41
|
-
@
|
42
|
-
@
|
39
|
+
@relationships_list = json["relationships"]
|
40
|
+
@investments_list = json['investments']
|
41
|
+
@milestones_list = json['milestones']
|
42
|
+
@providerships_list = json["providerships"]
|
43
43
|
@funds = json['funds']
|
44
44
|
@video_embeds = json['video_embeds']
|
45
45
|
@external_links = json['external_links']
|
46
46
|
end
|
47
47
|
|
48
|
+
def relationships
|
49
|
+
@relationships ||= Relationship.array_from_list(@relationships_list)
|
50
|
+
end
|
51
|
+
|
52
|
+
def providerships
|
53
|
+
@providerships ||= Relationship.array_from_list(@providerships_list)
|
54
|
+
end
|
55
|
+
|
56
|
+
def investments
|
57
|
+
@investments ||= Investment.array_from_list(@investments_list)
|
58
|
+
end
|
59
|
+
|
60
|
+
def milestones
|
61
|
+
@milestones ||= Milestone.array_from_list(@milestones_list)
|
62
|
+
end
|
63
|
+
|
64
|
+
def founded?
|
65
|
+
!!(@founded_year || @founded_month || @founded_day)
|
66
|
+
end
|
67
|
+
|
48
68
|
# Returns the date the financial org was founded, or nil if not provided.
|
49
69
|
def founded
|
50
70
|
@founded ||= date_from_components(@founded_year, @founded_month, @founded_day)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Crunchbase
|
2
|
+
class Image
|
3
|
+
|
4
|
+
def self.create(hash)
|
5
|
+
hash ? self.new(hash) : nil
|
6
|
+
end
|
7
|
+
|
8
|
+
attr_reader :attribution, :sizes
|
9
|
+
|
10
|
+
def initialize(hash)
|
11
|
+
return nil unless hash
|
12
|
+
@attribution = hash['attribution']
|
13
|
+
@sizes = hash['available_sizes'].map{|s| ImageSize.new(s)}.sort
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ImageSize
|
18
|
+
include Comparable
|
19
|
+
|
20
|
+
attr_reader :height, :width, :url
|
21
|
+
|
22
|
+
def <=>(anOther)
|
23
|
+
pixels <=> anOther.pixels
|
24
|
+
end
|
25
|
+
|
26
|
+
def initialize(ary)
|
27
|
+
@width = ary[0][0]
|
28
|
+
@height = ary[0][1]
|
29
|
+
@url = ary[1]
|
30
|
+
end
|
31
|
+
|
32
|
+
def pixels
|
33
|
+
return @width * @height
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -2,15 +2,13 @@ module Crunchbase
|
|
2
2
|
class Investment
|
3
3
|
|
4
4
|
include Crunchbase::DateMethods
|
5
|
+
self.extend Crunchbase::ArrayFromList
|
5
6
|
|
6
7
|
attr_reader :funding_round_code, :funding_source_url,
|
7
8
|
:funding_source_description, :raised_amount, :raised_currency_code,
|
9
|
+
:funded_year, :funded_month, :funded_day,
|
8
10
|
:company_name, :company_permalink
|
9
11
|
|
10
|
-
def self.array_from_investment_list(list)
|
11
|
-
list.map{|l| self.new(l)}
|
12
|
-
end
|
13
|
-
|
14
12
|
def initialize(hash)
|
15
13
|
hash = hash["funding_round"]
|
16
14
|
@funding_round_code = hash["round_code"]
|
@@ -32,10 +30,14 @@ module Crunchbase
|
|
32
30
|
@company = Company.get(@company_permalink)
|
33
31
|
return @company
|
34
32
|
end
|
33
|
+
|
34
|
+
def funded_date?
|
35
|
+
!!(@funded_year || @funded_month || @funded_day)
|
36
|
+
end
|
35
37
|
|
36
38
|
def funded_date
|
37
39
|
@funded_date ||= date_from_components(@funded_year, @funded_month, @funded_day)
|
38
40
|
end
|
39
41
|
|
40
42
|
end
|
41
|
-
end
|
43
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Crunchbase
|
2
|
+
class Milestone
|
3
|
+
attr_reader :description, :source_url, :source_text,
|
4
|
+
:source_description, :stoneable_type, :stoned_value,
|
5
|
+
:stoned_value_type, :stoned_acquirer,
|
6
|
+
:stoned_year, :stoned_month, :stoned_year
|
7
|
+
|
8
|
+
include Crunchbase::DateMethods
|
9
|
+
self.extend Crunchbase::ArrayFromList
|
10
|
+
|
11
|
+
def initialize(obj)
|
12
|
+
@description = obj['description']
|
13
|
+
@stoned_year = obj['stoned_year']
|
14
|
+
@stoned_month = obj['stoned_month']
|
15
|
+
@stoned_day = obj['stoned_day']
|
16
|
+
@source_url = obj['source_url']
|
17
|
+
@source_text = obj['source_text']
|
18
|
+
@source_description = obj['source_description']
|
19
|
+
@stoneable_type = obj['stoneable_type']
|
20
|
+
@stoned_value = obj['stoned_value']
|
21
|
+
@stoned_value_type = obj['stoned_value_type']
|
22
|
+
@stoned_acquirer = obj['stoned_acquirer']
|
23
|
+
end
|
24
|
+
|
25
|
+
def date?
|
26
|
+
!!(@stoned_year || @stoned_month || @stoned_day)
|
27
|
+
end
|
28
|
+
|
29
|
+
def date
|
30
|
+
@date ||= date_from_components(@stoned_year, @stoned_month, @stoned_day)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/crunchbase/person.rb
CHANGED
@@ -10,8 +10,8 @@ module Crunchbase
|
|
10
10
|
attr_reader :first_name, :last_name, :permalink, :crunchbase_url,
|
11
11
|
:homepage_url, :birthplace, :twitter_username, :blog_url, :blog_feed_url,
|
12
12
|
:affiliation_name, :created_at, :updated_at, :overview, :created_at,
|
13
|
-
:updated_at, :
|
14
|
-
:
|
13
|
+
:updated_at, :image, :video_embeds, :external_links, :web_presences,
|
14
|
+
:born_year, :born_month, :born_day
|
15
15
|
|
16
16
|
def self.find(first_name, last_name)
|
17
17
|
get(API.permalink({first_name: first_name, last_name: last_name}, "people")["permalink"])
|
@@ -36,15 +36,31 @@ module Crunchbase
|
|
36
36
|
@created_at = DateTime.parse(json["created_at"])
|
37
37
|
@updated_at = DateTime.parse(json["updated_at"])
|
38
38
|
@overview = json["overview"]
|
39
|
-
|
40
|
-
@
|
41
|
-
@
|
42
|
-
@
|
39
|
+
@image = Image.create(json["image"])
|
40
|
+
@relationships_list = json["relationships"]
|
41
|
+
@investments_list = json["investments"]
|
42
|
+
@milestones_list = json["milestones"]
|
43
43
|
@video_embeds = json["video_embeds"]
|
44
44
|
@external_links = json["external_links"]
|
45
45
|
@web_presences = json["web_presences"]
|
46
46
|
end
|
47
47
|
|
48
|
+
def relationships
|
49
|
+
@relationships ||= Relationship.array_from_list(@relationships_list)
|
50
|
+
end
|
51
|
+
|
52
|
+
def investments
|
53
|
+
@investments ||= Investment.array_from_list(@investments_list)
|
54
|
+
end
|
55
|
+
|
56
|
+
def milestones
|
57
|
+
@milestones ||= Milestone.array_from_list(@milestones_list)
|
58
|
+
end
|
59
|
+
|
60
|
+
def born?
|
61
|
+
!!(@born_year || @born_month || @born_day)
|
62
|
+
end
|
63
|
+
|
48
64
|
# Returns a date object, or nil if Date cannot be created from
|
49
65
|
# provided information.
|
50
66
|
def born
|
data/lib/crunchbase/product.rb
CHANGED
@@ -9,9 +9,10 @@ module Crunchbase
|
|
9
9
|
|
10
10
|
attr_reader :name, :permalink, :crunchbase_url, :homepage_url, :blog_url,
|
11
11
|
:blog_feed_url, :twitter_username, :stage_code, :deadpooled_url,
|
12
|
+
:deadpooled_year, :deadpooled_month, :deadpooled_day,
|
13
|
+
:launched_year, :launched_month, :launched_day,
|
12
14
|
:invite_share_url, :created_at, :updated_at, :overview, :image,
|
13
|
-
:company_permalink, :company_name, :
|
14
|
-
:external_links
|
15
|
+
:company_permalink, :company_name, :video_embeds, :external_links
|
15
16
|
|
16
17
|
def initialize(json)
|
17
18
|
@name = json['name']
|
@@ -35,18 +36,30 @@ module Crunchbase
|
|
35
36
|
@created_at = DateTime.parse(json['created_at'])
|
36
37
|
@updated_at = DateTime.parse(json['updated_at'])
|
37
38
|
@overview = json['overview']
|
38
|
-
@image = json[
|
39
|
+
@image = Image.create(json["image"])
|
39
40
|
@company_permalink = json['company']['permalink']
|
40
41
|
@company_name = json['company']['name']
|
41
|
-
@
|
42
|
+
@milestones_list = json['milestones']
|
42
43
|
@video_embeds = json['video_embeds']
|
43
44
|
@external_links = json['external_links']
|
44
45
|
end
|
45
46
|
|
47
|
+
def milestones
|
48
|
+
@milestones ||= Milestone.array_from_list(@milestones_list)
|
49
|
+
end
|
50
|
+
|
51
|
+
def deadpooled?
|
52
|
+
!!(@deadpooled_year || @deadpooled_month || @deadpooled_day)
|
53
|
+
end
|
54
|
+
|
46
55
|
# Returns the date the product was deadpooled, or nil if not provided.
|
47
56
|
def deadpooled
|
48
57
|
@deadpooled ||= date_from_components(@deadpooled_year, @deadpooled_month, @deadpooled_day)
|
49
58
|
end
|
59
|
+
|
60
|
+
def launched?
|
61
|
+
!!(@launched_year || @launched_month || @launched_day)
|
62
|
+
end
|
50
63
|
|
51
64
|
# Returns the date the product was launched, or nil if not provided.
|
52
65
|
def launched
|
@@ -7,7 +7,7 @@ module Crunchbase
|
|
7
7
|
|
8
8
|
# Takes a relationship list (directly from the JSON hash) and returns an
|
9
9
|
# array of instances of Relationship subclasses.
|
10
|
-
def self.
|
10
|
+
def self.array_from_list(list)
|
11
11
|
list.map do |l|
|
12
12
|
if l["person"]
|
13
13
|
PersonRelationship.new(l)
|
@@ -37,4 +37,4 @@ module Crunchbase
|
|
37
37
|
@is_past
|
38
38
|
end
|
39
39
|
end
|
40
|
-
end
|
40
|
+
end
|