crunchbase_v2 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/.gitignore
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
23
|
+
|
24
|
+
*.swp
|
25
|
+
spec/apikey.yml
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Encore Shao
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
= Crunchbase API
|
2
|
+
|
3
|
+
Ruby API wrapper for [Crunchbase API](https://developer.crunchbase.com/docs) version 2.
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'crunchbase', github: 'encoreshao/crunchbase_v2'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
== Usage Examples
|
16
|
+
|
17
|
+
Config your user_key, debug somewhere like development.rb.
|
18
|
+
|
19
|
+
Crunchbase::API.key = 'YOUR_API_KEY'
|
20
|
+
Crunchbase::API.debug = false
|
21
|
+
|
22
|
+
=== Search
|
23
|
+
|
24
|
+
Searching the Crunchbase is possible with the Search class, The Search will return a list consisting of objects of the SearchResult type.
|
25
|
+
|
26
|
+
s = Crunchbase::Search.search("facebook")
|
27
|
+
OR
|
28
|
+
s = Crunchbase::Search.search({ domain_name: 'facebook.com' }, 'organizations')
|
29
|
+
s.total_items || s.per_page || s.pages || s.current_page
|
30
|
+
all_results = s.results
|
31
|
+
all_results.each { |r| puts r.name }
|
32
|
+
|
33
|
+
=== Organizations && RelationShip List Items
|
34
|
+
|
35
|
+
Get information by the permalink, Example:
|
36
|
+
|
37
|
+
company = Crunchbase::Organization.get("facebook")
|
38
|
+
Relationship objects
|
39
|
+
[ competitors customers founders funding_rounds ipos products sub_organizations ]
|
40
|
+
Friendly relationship objects
|
41
|
+
[ past_teams current_teams acquisitions offices headquarters categories investments primary_images images websites new_items board_members_and_advisors ]
|
42
|
+
company.competitors Only return Top 8 items
|
43
|
+
company.competitors_total_items Return competitors total items count
|
44
|
+
company.competitors.each do |e|
|
45
|
+
competitor = a.fetch
|
46
|
+
puts competitor.name
|
47
|
+
end
|
48
|
+
OR
|
49
|
+
company.websites
|
50
|
+
|
51
|
+
If you want all competitors items, Please do:
|
52
|
+
|
53
|
+
all_competitors = Competitor.lists_for_permalink(company.permalink)
|
54
|
+
all_competitors.per_page
|
55
|
+
all_competitors.current_page
|
56
|
+
all_competitors.size
|
57
|
+
all_competitors.results Return all competitors items
|
58
|
+
|
59
|
+
=== People
|
60
|
+
|
61
|
+
person = Crunchbase::Person.get( permalink )
|
62
|
+
|
63
|
+
#<Crunchbase::Person:0x007fc95bca3880 @type_name="Person" ..... >
|
64
|
+
|
65
|
+
people = Crunchbase::Person.list( page )
|
66
|
+
|
67
|
+
people.results
|
68
|
+
|
69
|
+
[#<Crunchbase::SearchResult:0x007fd16ae18b40 ...>,
|
70
|
+
#<Crunchbase::SearchResult:0x007fd16ae18870 ...>,
|
71
|
+
#<Crunchbase::SearchResult:0x007fd16ae185a0 ...>,
|
72
|
+
#<Crunchbase::SearchResult:0x007fd16ae182f8 ...>
|
73
|
+
......]
|
74
|
+
|
75
|
+
|
76
|
+
=== How to use Location & Category ....
|
77
|
+
|
78
|
+
Such as a Person
|
79
|
+
|
80
|
+
== Contributing
|
81
|
+
|
82
|
+
Contributions are welcome. Note that in order to run the test suite, you need to
|
83
|
+
include an API key in +spec/apikey.yml+. This file is ignored by git. An example
|
84
|
+
file is provided for convenience.
|
85
|
+
|
86
|
+
== Copyright
|
87
|
+
|
88
|
+
Copyright © 2014-08 Encore Shao. See LICENSE for details.
|
data/Rakefile
ADDED
data/crunchbase.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'crunchbase/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "crunchbase_v2"
|
8
|
+
spec.version = Crunchbase::VERSION
|
9
|
+
spec.authors = ["Encore Shao"]
|
10
|
+
spec.email = ["encore@ekohe.com"]
|
11
|
+
spec.summary = %q{ Wrapper for Crunchbase API version 2 }
|
12
|
+
spec.description = %q{ Wrapper for Crunchbase API version 2 }
|
13
|
+
spec.homepage = "https://github.com/encoreshao/crunchbase_v2"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec", "~> 2.10.0"
|
24
|
+
end
|
data/lib/crunchbase.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require "crunchbase/api"
|
2
|
+
require "crunchbase/crunch_exception"
|
3
|
+
require "crunchbase/cb_entity"
|
4
|
+
require "crunchbase/location"
|
5
|
+
require "crunchbase/category"
|
6
|
+
require "crunchbase/acquisition"
|
7
|
+
require "crunchbase/competitor"
|
8
|
+
require "crunchbase/customer"
|
9
|
+
require "crunchbase/funding_round"
|
10
|
+
require "crunchbase/founder"
|
11
|
+
require "crunchbase/headquarter"
|
12
|
+
require "crunchbase/sub_organization"
|
13
|
+
require "crunchbase/image"
|
14
|
+
require "crunchbase/primary_image"
|
15
|
+
require "crunchbase/investment"
|
16
|
+
require "crunchbase/ipo"
|
17
|
+
require "crunchbase/new_item"
|
18
|
+
require "crunchbase/office"
|
19
|
+
require "crunchbase/organization"
|
20
|
+
require "crunchbase/past_team"
|
21
|
+
require "crunchbase/current_team"
|
22
|
+
require "crunchbase/person"
|
23
|
+
require "crunchbase/product"
|
24
|
+
require "crunchbase/relationship"
|
25
|
+
require "crunchbase/search"
|
26
|
+
require "crunchbase/search_result"
|
27
|
+
require "crunchbase/website"
|
28
|
+
require "crunchbase/board_members_and_advisor"
|
29
|
+
require "crunchbase/version"
|
30
|
+
|
31
|
+
|
32
|
+
module Crunchbase
|
33
|
+
class << self
|
34
|
+
# coding...
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# http://api.crunchbase.com/v/2/organization/facebook/acquisitions?user_key=key
|
4
|
+
module Crunchbase
|
5
|
+
class Acquisition < CBEntity
|
6
|
+
RESOURCE_NAME = 'acquisition'
|
7
|
+
RESOURCE_LIST = 'acquisitions'
|
8
|
+
|
9
|
+
attr_reader :announced_on, :announced_on_trust_code, :price_currency_code,
|
10
|
+
:permalink, :name, :payment_type, :price, :disposition_of_acquired,
|
11
|
+
:acquisition_type, :acquisition_status, :price_usd, :created_at, :updated_at
|
12
|
+
|
13
|
+
attr_reader :acquirers, :acquirees, :new_items
|
14
|
+
|
15
|
+
attr_reader :acquirers_total_items, :acquirees_total_items, :new_items_total_items
|
16
|
+
|
17
|
+
def initialize(json)
|
18
|
+
@type_name = json['type']
|
19
|
+
properties = json['properties']
|
20
|
+
relationships = json['relationships']
|
21
|
+
|
22
|
+
@announced_on = properties['announced_on'] && DateTime.parse(properties['announced_on'])
|
23
|
+
@announced_on_trust_code = properties['announced_on_trust_code']
|
24
|
+
@price_currency_code = properties['price_currency_code']
|
25
|
+
@permalink = properties['permalink']
|
26
|
+
@name = properties['name']
|
27
|
+
@payment_type = properties['payment_type']
|
28
|
+
@price = properties['price']
|
29
|
+
@disposition_of_acquired = properties['disposition_of_acquired']
|
30
|
+
@acquisition_type = properties['acquisition_type']
|
31
|
+
@acquisition_status = properties['acquisition_status']
|
32
|
+
@price_usd = properties['price_usd']
|
33
|
+
@created_at = Time.at(properties['created_at']).utc
|
34
|
+
@updated_at = Time.at(properties['updated_at']).utc
|
35
|
+
|
36
|
+
@acquirers_list = relationships['acquirer']
|
37
|
+
@acquirees_list = relationships['acquiree']
|
38
|
+
@new_items_list = relationships['news']
|
39
|
+
end
|
40
|
+
|
41
|
+
def acquirers
|
42
|
+
@acquirers ||= Relationship.array_from_list(@acquirers_list)
|
43
|
+
end
|
44
|
+
|
45
|
+
def acquirees
|
46
|
+
@acquirees ||= Relationship.array_from_list(@acquirees_list)
|
47
|
+
end
|
48
|
+
|
49
|
+
def new_items
|
50
|
+
@new_items ||= NewItem.array_from_list(@new_items_list)
|
51
|
+
end
|
52
|
+
|
53
|
+
def acquirers_total_items
|
54
|
+
@acquirers_total_items ||= Relationship.total_items_from_list(@acquirers_list)
|
55
|
+
end
|
56
|
+
|
57
|
+
def acquirees_total_items
|
58
|
+
@acquirees_total_items ||= Relationship.total_items_from_list(@acquirees_list)
|
59
|
+
end
|
60
|
+
|
61
|
+
def new_items_total_items
|
62
|
+
@new_items_total_items ||= NewItem.total_items_from_list(@new_items_list)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'yajl'
|
6
|
+
rescue LoadError
|
7
|
+
require 'json'
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'timeout'
|
11
|
+
|
12
|
+
module Crunchbase
|
13
|
+
|
14
|
+
class API
|
15
|
+
SUPPORTED_ENTITIES = ['organizations', 'organization', 'people', 'person', 'products', 'product', 'funding_rounds', 'funding-round', 'acquisition', 'ipo', 'fund-raise', 'locations', 'categories', 'offices', 'customers']
|
16
|
+
|
17
|
+
@timeout_limit = 60
|
18
|
+
@redirect_limit = 2
|
19
|
+
@version = '2'
|
20
|
+
@base_url = 'http://api.crunchbase.com'
|
21
|
+
@site_url = "http://www.crunchbase.com"
|
22
|
+
@image_url = "http://images.crunchbase.com/"
|
23
|
+
@debug = false
|
24
|
+
|
25
|
+
# Must be overridden in subclasses
|
26
|
+
RESOURCE_NAME = "undefined"
|
27
|
+
RESOURCE_LIST = "undefineds"
|
28
|
+
|
29
|
+
ORDER_CREATED_AT_ASC = 'created_at asc'
|
30
|
+
ORDER_CREATED_AT_DESC = 'created_at desc'
|
31
|
+
ORDER_UPDATED_AT_ASC = 'updated_at asc'
|
32
|
+
ORDER_UPDATED_AT_DESC = 'updated_at desc'
|
33
|
+
|
34
|
+
class << self
|
35
|
+
attr_accessor :timeout_limit, :redirect_limit, :key, :base_url, :version,
|
36
|
+
:debug, :image_url, :site_url
|
37
|
+
|
38
|
+
def api_url
|
39
|
+
base_url.gsub(/\/$/, '') + '/v/' + version + '/'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.single_entity(permalink, entity_name)
|
44
|
+
raise CrunchException, "Unsupported Entity Type" unless SUPPORTED_ENTITIES.include?(entity_name)
|
45
|
+
|
46
|
+
fetch(permalink, entity_name)
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.all(entity)
|
50
|
+
get_json_response( api_url + entity )
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
# Returns the JSON parser, whether that's an instance of Yajl or JSON
|
56
|
+
def self.parser
|
57
|
+
if defined?(Yajl)
|
58
|
+
Yajl::Parser
|
59
|
+
else
|
60
|
+
JSON
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Fetches URI for the permalink interface.
|
65
|
+
def self.fetch(permalink, object_name)
|
66
|
+
uri = api_url + "#{object_name}/#{permalink}"
|
67
|
+
|
68
|
+
get_json_response(uri)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Fetches URI for the search interface.
|
72
|
+
def self.search(options, object_lists)
|
73
|
+
options[:page] = 1 if options[:page].nil?
|
74
|
+
options[:order] = ORDER_CREATED_AT_ASC if options[:order].nil?
|
75
|
+
|
76
|
+
uri = api_url + "#{object_lists}?" + collect_parameters(options)
|
77
|
+
|
78
|
+
get_json_response(uri)
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# Fetches URI for the search interface.
|
83
|
+
def self.list(options, object_lists)
|
84
|
+
options[:page] = 1 if options[:page].nil?
|
85
|
+
model_name = options.delete(:model_name)
|
86
|
+
|
87
|
+
uri = api_url + "#{object_lists}?" + collect_parameters(options)
|
88
|
+
|
89
|
+
Search.new options, get_json_response(uri), SearchResult
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.collect_parameters(options)
|
93
|
+
require "cgi"
|
94
|
+
|
95
|
+
options.map{|k,v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"}.join('&')
|
96
|
+
end
|
97
|
+
|
98
|
+
# Searches for a permalink in a particular category.
|
99
|
+
# Demo: http://api.crunchbase.com/v/2/organization/facebook/offices?user_key=key
|
100
|
+
def self.lists_for_permalink(permalink, category, options)
|
101
|
+
options[:page] = 1 if options[:page].nil?
|
102
|
+
options[:order] = ORDER_CREATED_AT_ASC if options[:order].nil?
|
103
|
+
model_name = options.delete(:model_name)
|
104
|
+
|
105
|
+
uri = api_url + "organization/#{permalink}/#{category}?#{collect_parameters(options)}"
|
106
|
+
|
107
|
+
Search.new options, get_json_response(uri), model_name
|
108
|
+
end
|
109
|
+
|
110
|
+
# Gets specified URI, then parses the returned JSON. Raises Timeout error
|
111
|
+
# if request time exceeds set limit. Raises CrunchException if returned
|
112
|
+
# JSON contains an error.
|
113
|
+
def self.get_json_response(uri)
|
114
|
+
raise CrunchException, "User key required, visit http://developer.crunchbase.com" unless @key
|
115
|
+
uri = uri + "#{uri.match('\?') ? "&" : "?"}user_key=#{@key}"
|
116
|
+
|
117
|
+
resp = Timeout::timeout(@timeout_limit) {
|
118
|
+
get_url_following_redirects(uri, @redirect_limit)
|
119
|
+
}
|
120
|
+
response = parser.parse(resp)["data"]
|
121
|
+
|
122
|
+
raise CrunchException, response["error"] if response.class == Hash && response["error"]
|
123
|
+
|
124
|
+
response
|
125
|
+
end
|
126
|
+
|
127
|
+
# Performs actual HTTP requests, recursively if a redirect response is
|
128
|
+
# encountered. Will raise HTTP error if response is not 200, 404, or 3xx.
|
129
|
+
def self.get_url_following_redirects(uri_str, limit = 10)
|
130
|
+
raise CrunchException, 'HTTP redirect too deep' if limit == 0
|
131
|
+
|
132
|
+
url = URI.parse(uri_str)
|
133
|
+
|
134
|
+
if self.debug
|
135
|
+
length = (uri_str.length + 10)
|
136
|
+
puts "*"*length
|
137
|
+
puts "*** #{url} ***"
|
138
|
+
puts "*"*length
|
139
|
+
end
|
140
|
+
|
141
|
+
response = Net::HTTP.start(url.host, url.port) { |http| http.get(url.request_uri) }
|
142
|
+
case response
|
143
|
+
when Net::HTTPSuccess, Net::HTTPNotFound
|
144
|
+
response.body
|
145
|
+
when Net::HTTPRedirection
|
146
|
+
get_url_following_redirects(response['location'], limit - 1)
|
147
|
+
else
|
148
|
+
response.error!
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encode: utf-8
|
2
|
+
|
3
|
+
# http://api.crunchbase.com/v/2/organization/facebook/board_members_and_advisors
|
4
|
+
|
5
|
+
module Crunchbase
|
6
|
+
class BoardMembersAndAdvisor < CBEntity
|
7
|
+
RESOURCE_LIST = 'board_members_and_advisors'
|
8
|
+
|
9
|
+
attr_reader :type_name, :first_name, :last_name, :title, :started_on, :path,
|
10
|
+
:created_at, :updated_at
|
11
|
+
|
12
|
+
def initialize(json)
|
13
|
+
@type_name = json['type']
|
14
|
+
@first_name = json['first_name']
|
15
|
+
@last_name = json['last_name']
|
16
|
+
@title = json['title']
|
17
|
+
@path = json['path']
|
18
|
+
@started_on = json['started_on'] && DateTime.parse(json['started_on'])
|
19
|
+
@created_at = Time.at(json['created_at']).utc
|
20
|
+
@updated_at = Time.at(json['updated_at']).utc
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|