linkedin 0.1.7 → 0.2.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/.autotest +14 -0
- data/.document +5 -0
- data/.gitignore +25 -0
- data/Gemfile +3 -0
- data/README.markdown +12 -7
- data/Rakefile +10 -33
- data/VERSION +1 -1
- data/changelog.markdown +38 -0
- data/examples/authenticate.rb +1 -1
- data/lib/linked_in/api_standard_profile_request.rb +14 -6
- data/lib/linked_in/authorization_helpers.rb +48 -0
- data/lib/linked_in/base.rb +13 -0
- data/lib/linked_in/birthdate.rb +21 -0
- data/lib/linked_in/client.rb +86 -146
- data/lib/linked_in/company.rb +9 -7
- data/lib/linked_in/connections.rb +14 -5
- data/lib/linked_in/country.rb +7 -5
- data/lib/linked_in/current_share.rb +56 -0
- data/lib/linked_in/education.rb +40 -14
- data/lib/linked_in/error.rb +19 -8
- data/lib/linked_in/group.rb +30 -7
- data/lib/linked_in/languages.rb +28 -0
- data/lib/linked_in/likes.rb +23 -0
- data/lib/linked_in/location.rb +11 -6
- data/lib/linked_in/message.rb +20 -0
- data/lib/linked_in/network.rb +10 -5
- data/lib/linked_in/patents.rb +42 -0
- data/lib/linked_in/people.rb +16 -8
- data/lib/linked_in/person.rb +7 -0
- data/lib/linked_in/phone_number.rb +29 -0
- data/lib/linked_in/position.rb +45 -14
- data/lib/linked_in/profile.rb +81 -28
- data/lib/linked_in/publications.rb +40 -0
- data/lib/linked_in/recipient.rb +7 -0
- data/lib/linked_in/recipients.rb +18 -0
- data/lib/linked_in/recommendations.rb +30 -0
- data/lib/linked_in/request_helpers.rb +76 -0
- data/lib/linked_in/short_profile.rb +13 -0
- data/lib/linked_in/skill.rb +33 -0
- data/lib/linked_in/to_xml_helpers.rb +53 -0
- data/lib/linked_in/update.rb +21 -9
- data/lib/linked_in/url_resource.rb +24 -6
- data/lib/linkedin.rb +58 -59
- data/linkedin.gemspec +52 -0
- data/spec/cases/client_spec.rb +281 -0
- data/spec/cases/linkedin_spec.rb +37 -0
- data/spec/cases/oauth_spec.rb +109 -0
- data/{test → spec}/fixtures/blank.xml +0 -0
- data/{test → spec}/fixtures/connections.xml +0 -0
- data/{test → spec}/fixtures/error.xml +0 -0
- data/spec/fixtures/likes.xml +18 -0
- data/spec/fixtures/mailbox_items.xml +16 -0
- data/{test → spec}/fixtures/network_status_with_group.xml +3 -3
- data/{test → spec}/fixtures/network_statuses.xml +18 -0
- data/{test → spec}/fixtures/picture_updates.xml +0 -0
- data/{test → spec}/fixtures/profile.xml +0 -0
- data/{test → spec}/fixtures/profile_full.xml +57 -0
- data/{test → spec}/fixtures/profile_with_positions.xml +0 -0
- data/{test → spec}/fixtures/search.xml +2 -2
- data/spec/fixtures/shares.xml +12 -0
- data/{test → spec}/fixtures/status.xml +0 -0
- data/spec/spec_helper.rb +49 -0
- metadata +160 -76
- data/test/client_test.rb +0 -124
- data/test/oauth_test.rb +0 -117
- data/test/test_helper.rb +0 -51
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LinkedIn do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
LinkedIn.token = nil
|
7
|
+
LinkedIn.secret = nil
|
8
|
+
LinkedIn.default_profile_fields = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be able to set the consumer token and consumer secret" do
|
12
|
+
LinkedIn.token = 'consumer_token'
|
13
|
+
LinkedIn.secret = 'consumer_secret'
|
14
|
+
|
15
|
+
LinkedIn.token.should == 'consumer_token'
|
16
|
+
LinkedIn.secret.should == 'consumer_secret'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be able to set the default profile fields" do
|
20
|
+
LinkedIn.default_profile_fields = ['education', 'positions']
|
21
|
+
|
22
|
+
LinkedIn.default_profile_fields.should == ['education', 'positions']
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should be able to set the consumer token and consumer secret via a configure block" do
|
26
|
+
LinkedIn.configure do |config|
|
27
|
+
config.token = 'consumer_token'
|
28
|
+
config.secret = 'consumer_secret'
|
29
|
+
config.default_profile_fields = ['education', 'positions']
|
30
|
+
end
|
31
|
+
|
32
|
+
LinkedIn.token.should == 'consumer_token'
|
33
|
+
LinkedIn.secret.should == 'consumer_secret'
|
34
|
+
LinkedIn.default_profile_fields.should == ['education', 'positions']
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "LinkedIn::Client OAuth" do
|
4
|
+
let(:client) { LinkedIn::Client.new('token', 'secret') }
|
5
|
+
|
6
|
+
it "should initialize with consumer token and secret" do
|
7
|
+
client.ctoken.should == 'token'
|
8
|
+
client.csecret.should == 'secret'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should set authorization path to '/uas/oauth/authorize' by default" do
|
12
|
+
client.consumer.options[:authorize_path].should == '/uas/oauth/authorize'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a consumer" do
|
16
|
+
consumer = mock('oauth consumer')
|
17
|
+
options = {
|
18
|
+
:request_token_path => "/uas/oauth/requestToken",
|
19
|
+
:access_token_path => "/uas/oauth/accessToken",
|
20
|
+
:authorize_path => "/uas/oauth/authorize",
|
21
|
+
:site => 'https://api.linkedin.com'
|
22
|
+
}
|
23
|
+
OAuth::Consumer.should_receive(:new).with('token', 'secret', options).and_return(consumer)
|
24
|
+
|
25
|
+
client.consumer.should == consumer
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a request token from the consumer" do
|
29
|
+
options = {
|
30
|
+
:request_token_path => "/uas/oauth/requestToken",
|
31
|
+
:access_token_path => "/uas/oauth/accessToken",
|
32
|
+
:authorize_path => "/uas/oauth/authorize",
|
33
|
+
:site => 'https://api.linkedin.com'
|
34
|
+
}
|
35
|
+
consumer = mock('oauth consumer')
|
36
|
+
request_token = mock('request token')
|
37
|
+
consumer.should_receive(:get_request_token).and_return(request_token)
|
38
|
+
OAuth::Consumer.should_receive(:new).with('token', 'secret', options).and_return(consumer)
|
39
|
+
|
40
|
+
client.request_token.should == request_token
|
41
|
+
end
|
42
|
+
|
43
|
+
it "#set_callback_url should clear the request token and set the callback url" do
|
44
|
+
consumer = mock('oauth consumer')
|
45
|
+
request_token = mock('request token')
|
46
|
+
options = {
|
47
|
+
:request_token_path => "/uas/oauth/requestToken",
|
48
|
+
:access_token_path => "/uas/oauth/accessToken",
|
49
|
+
:authorize_path => "/uas/oauth/authorize",
|
50
|
+
:site => 'https://api.linkedin.com'
|
51
|
+
}
|
52
|
+
OAuth::Consumer.
|
53
|
+
should_receive(:new).
|
54
|
+
with('token', 'secret', options).
|
55
|
+
and_return(consumer)
|
56
|
+
|
57
|
+
linkedin = LinkedIn::Client.new('token', 'secret')
|
58
|
+
|
59
|
+
consumer.
|
60
|
+
should_receive(:get_request_token).
|
61
|
+
with({:oauth_callback => 'http://myapp.com/oauth_callback'})
|
62
|
+
|
63
|
+
linkedin.set_callback_url('http://myapp.com/oauth_callback')
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should be able to create access token from request token, request secret and verifier" do
|
67
|
+
consumer = OAuth::Consumer.new('token', 'secret', {:site => 'https://api.linkedin.com'})
|
68
|
+
client.stub(:consumer).and_return(consumer)
|
69
|
+
|
70
|
+
access_token = mock('access token', :token => 'atoken', :secret => 'asecret')
|
71
|
+
request_token = mock('request token')
|
72
|
+
request_token.
|
73
|
+
should_receive(:get_access_token).
|
74
|
+
with(:oauth_verifier => 'verifier').
|
75
|
+
and_return(access_token)
|
76
|
+
|
77
|
+
OAuth::RequestToken.
|
78
|
+
should_receive(:new).
|
79
|
+
with(consumer, 'rtoken', 'rsecret').
|
80
|
+
and_return(request_token)
|
81
|
+
|
82
|
+
client.authorize_from_request('rtoken', 'rsecret', 'verifier')
|
83
|
+
client.access_token.class.should be(OAuth::AccessToken)
|
84
|
+
client.access_token.token.should == 'atoken'
|
85
|
+
client.access_token.secret.should == 'asecret'
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should be able to create access token from access token and secret" do
|
89
|
+
consumer = OAuth::Consumer.new('token', 'secret', {:site => 'https://api.linkedin.com'})
|
90
|
+
client.stub(:consumer).and_return(consumer)
|
91
|
+
|
92
|
+
client.authorize_from_access('atoken', 'asecret')
|
93
|
+
client.access_token.class.should be(OAuth::AccessToken)
|
94
|
+
client.access_token.token.should == 'atoken'
|
95
|
+
client.access_token.secret.should == 'asecret'
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should be able to configure consumer token and consumer secret without passing to initialize" do
|
99
|
+
LinkedIn.configure do |config|
|
100
|
+
config.token = 'consumer_token'
|
101
|
+
config.secret = 'consumer_secret'
|
102
|
+
end
|
103
|
+
|
104
|
+
linkedin = LinkedIn::Client.new
|
105
|
+
linkedin.ctoken.should == 'consumer_token'
|
106
|
+
linkedin.csecret.should == 'consumer_secret'
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<likes total="2">
|
2
|
+
<like>
|
3
|
+
<person>
|
4
|
+
<id>POfcN6JhcU</id>
|
5
|
+
<first-name>George</first-name>
|
6
|
+
<last-name>Washington</last-name>
|
7
|
+
<headline>President, United States of America</headline>
|
8
|
+
</person>
|
9
|
+
</like>
|
10
|
+
<like>
|
11
|
+
<person>
|
12
|
+
<id>ROfcN6JhcW</id>
|
13
|
+
<first-name>Napoleon</first-name>
|
14
|
+
<last-name>Bonaparte</last-name>
|
15
|
+
<headline>Emperor, France</headline>
|
16
|
+
</person>
|
17
|
+
</like>
|
18
|
+
</likes>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<mailbox-item>
|
3
|
+
<recipients>
|
4
|
+
<recipient>
|
5
|
+
<person path="/people/~"/>
|
6
|
+
</recipient>
|
7
|
+
|
8
|
+
<recipient>
|
9
|
+
<person path="/people/abcdefg"/>
|
10
|
+
</recipient>
|
11
|
+
|
12
|
+
</recipients>
|
13
|
+
<subject>Congratulations on your new position.</subject>
|
14
|
+
<body>You're certainly the best person for the job!</body>
|
15
|
+
</mailbox-item>
|
16
|
+
|
@@ -4,8 +4,8 @@
|
|
4
4
|
<property key="degree-1-count">146</property>
|
5
5
|
<property key="degree-2-count">16998</property>
|
6
6
|
</network-stats>
|
7
|
-
<updates total="1" start="0" count="1">
|
8
|
-
|
7
|
+
<updates total="1" start="0" count="1">
|
8
|
+
<update>
|
9
9
|
<timestamp>1265063139120</timestamp>
|
10
10
|
<update-type>JGRP</update-type>
|
11
11
|
<update-content>
|
@@ -40,5 +40,5 @@
|
|
40
40
|
</update-content>
|
41
41
|
<is-commentable>false</is-commentable>
|
42
42
|
</update>
|
43
|
-
</updates>
|
43
|
+
</updates>
|
44
44
|
</network>
|
@@ -51,6 +51,24 @@
|
|
51
51
|
</person>
|
52
52
|
</update-content>
|
53
53
|
<is-commentable>true</is-commentable>
|
54
|
+
<likes total="2">
|
55
|
+
<like>
|
56
|
+
<person>
|
57
|
+
<id>POfcN6JhcU</id>
|
58
|
+
<first-name>George</first-name>
|
59
|
+
<last-name>Washington</last-name>
|
60
|
+
<headline>President, United States of America</headline>
|
61
|
+
</person>
|
62
|
+
</like>
|
63
|
+
<like>
|
64
|
+
<person>
|
65
|
+
<id>ROfcN6JhcW</id>
|
66
|
+
<first-name>Napoleon</first-name>
|
67
|
+
<last-name>Bonaparte</last-name>
|
68
|
+
<headline>Emperor, France</headline>
|
69
|
+
</person>
|
70
|
+
</like>
|
71
|
+
</likes>
|
54
72
|
</update>
|
55
73
|
<update>
|
56
74
|
<timestamp>1259134444850</timestamp>
|
File without changes
|
File without changes
|
@@ -3845,5 +3845,62 @@ Working closely with Microsoft consultants onstaff and in Redmond in order to in
|
|
3845
3845
|
<name>My Blog</name>
|
3846
3846
|
</member-url>
|
3847
3847
|
</member-url-resources>
|
3848
|
+
<languages total="2">
|
3849
|
+
<language>
|
3850
|
+
<id>70</id>
|
3851
|
+
<language>
|
3852
|
+
<name>English</name>
|
3853
|
+
</language>
|
3854
|
+
</language>
|
3855
|
+
<language>
|
3856
|
+
<id>72</id>
|
3857
|
+
<language>
|
3858
|
+
<name>Klingon</name>
|
3859
|
+
</language>
|
3860
|
+
</language>
|
3861
|
+
</languages>
|
3862
|
+
<skills total="1">
|
3863
|
+
<skill>
|
3864
|
+
<id>38</id>
|
3865
|
+
<skill>
|
3866
|
+
<name>Union negotiations</name>
|
3867
|
+
</skill>
|
3868
|
+
</skill>
|
3869
|
+
</skills>
|
3870
|
+
<certifications
|
3871
|
+
total="1">
|
3872
|
+
<certification>
|
3873
|
+
<id>32</id>
|
3874
|
+
<name>Series 7 Exam</name>
|
3875
|
+
</certification>
|
3876
|
+
</certifications>
|
3877
|
+
<patents total="1">
|
3878
|
+
<patent>
|
3879
|
+
<id>51</id>
|
3880
|
+
<title>Time machine</title>
|
3881
|
+
<date>
|
3882
|
+
<year>2008</year>
|
3883
|
+
<month>7</month>
|
3884
|
+
<day>23</day>
|
3885
|
+
</date>
|
3886
|
+
</patent>
|
3887
|
+
</patents>
|
3888
|
+
<phone-numbers total="1">
|
3889
|
+
<phone-number>
|
3890
|
+
<phone-type>mobile</phone-type>
|
3891
|
+
<phone-number>+444444444444</phone-number>
|
3892
|
+
</phone-number>
|
3893
|
+
</phone-numbers>
|
3894
|
+
<publications total="1">
|
3895
|
+
<publication>
|
3896
|
+
<id>31</id>
|
3897
|
+
<title>How to host an awesome podcast</title>
|
3898
|
+
<date>
|
3899
|
+
<year>2006</year>
|
3900
|
+
<month>8</month>
|
3901
|
+
<day>1</day>
|
3902
|
+
</date>
|
3903
|
+
</publication>
|
3904
|
+
</publications>
|
3848
3905
|
<picture-url>http://media.linkedin.com/mpr/mpr/shrink_80_80/p/2/000/01c/359/041bc1b.jpg</picture-url>
|
3849
3906
|
</person>
|
File without changes
|
@@ -276,12 +276,12 @@ Follow the SCRUM agile development methodology.</summary>
|
|
276
276
|
<title>President / Technical Architect / Lead Developer</title>
|
277
277
|
<summary>Owner, technical architect and lead developer for an independent software development consultancy.
|
278
278
|
|
279
|
-
SilvaSoft has built numerous customer facing business web sites using Java web technologies that integrate with existing web service, shipping and secure credit card processing APIs.
|
279
|
+
SilvaSoft has built numerous customer facing business web sites using Java web technologies that integrate with existing web service, shipping and secure credit card processing APIs.
|
280
280
|
|
281
281
|
We use technologies such as Java (1.4, 5, 6), Struts, JBoss Seam, Tomcat (5, 6), XFire, Apache Axis, Apache CXF and Sun Metro.
|
282
282
|
|
283
283
|
We have integrated with third party web services such as:
|
284
|
-
1. Amazon S3
|
284
|
+
1. Amazon S3
|
285
285
|
2. PayPal credit card payment API
|
286
286
|
3. Authorize.net credit card / check payment API
|
287
287
|
4. UPS shipping API.
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<share>
|
3
|
+
<comment>Testing out the LinkedIn API</comment>
|
4
|
+
<content>
|
5
|
+
<title>Share</title>
|
6
|
+
<submitted-url>http://www.linkedin.com</submitted-url>
|
7
|
+
<submitted-image-url>http://www.linkedin.com/pretty_logo.jpg</submitted-image-url>
|
8
|
+
</content>
|
9
|
+
<visibility>
|
10
|
+
<code>anyone</code>
|
11
|
+
</visibility>
|
12
|
+
</share>
|
File without changes
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'webmock/rspec'
|
2
|
+
|
3
|
+
require 'linkedin'
|
4
|
+
|
5
|
+
|
6
|
+
def fixture_path
|
7
|
+
File.expand_path("../fixtures", __FILE__)
|
8
|
+
end
|
9
|
+
|
10
|
+
def fixture(file)
|
11
|
+
File.new(fixture_path + '/' + file)
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def linkedin_url(url)
|
16
|
+
url =~ /^http/ ? url : "https://api.linkedin.com#{url}"
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def stub_get(url, filename, status=nil)
|
21
|
+
options = { :body => fixture(filename) }
|
22
|
+
options.merge!({ :status => status }) unless status.nil?
|
23
|
+
|
24
|
+
stub_request(:get, linkedin_url(url)).to_return(options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def stub_post(url, result)
|
28
|
+
result_hash = { :status => 201 }
|
29
|
+
result_hash[:body] = fixture(result) if result
|
30
|
+
|
31
|
+
stub_request(:post, linkedin_url(url)).to_return(result_hash)
|
32
|
+
end
|
33
|
+
|
34
|
+
def expect_post(url, body, result = nil)
|
35
|
+
a_request(:post, linkedin_url(url)).with({
|
36
|
+
:body => fixture(body).read,
|
37
|
+
:headers => { :content_type => 'application/xml' }
|
38
|
+
}).should have_been_made.once
|
39
|
+
end
|
40
|
+
|
41
|
+
def stub_put(url, returns_xml, status=nil)
|
42
|
+
options = { :body => fixture(returns_xml) }
|
43
|
+
options.merge!({ :status => status }) unless status.nil?
|
44
|
+
stub_request(:put, linkedin_url(url)).to_return(options)
|
45
|
+
end
|
46
|
+
|
47
|
+
def stub_delete(url, returns_xml)
|
48
|
+
stub_request(:delete, linkedin_url(url)).to_return(:body => fixture(returns_xml))
|
49
|
+
end
|
metadata
CHANGED
@@ -1,131 +1,198 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linkedin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 21
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Wynn Netherland
|
14
|
+
- Josh Kalderimis
|
8
15
|
autorequire:
|
9
16
|
bindir: bin
|
10
17
|
cert_chain: []
|
11
18
|
|
12
|
-
date: 2010-
|
19
|
+
date: 2010-03-01 00:00:00 +01:00
|
13
20
|
default_executable:
|
14
21
|
dependencies:
|
15
22
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
17
|
-
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
26
|
- - ~>
|
22
27
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
25
|
-
-
|
26
|
-
|
28
|
+
hash: 15
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 4
|
32
|
+
- 0
|
33
|
+
version: 0.4.0
|
34
|
+
prerelease: false
|
27
35
|
type: :runtime
|
28
|
-
|
29
|
-
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.1.3
|
34
|
-
version:
|
36
|
+
requirement: *id001
|
37
|
+
name: oauth
|
35
38
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
37
|
-
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
40
41
|
requirements:
|
41
42
|
- - ~>
|
42
43
|
- !ruby/object:Gem::Version
|
44
|
+
hash: 19
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 1
|
48
|
+
- 4
|
43
49
|
version: 0.1.4
|
44
|
-
|
50
|
+
prerelease: false
|
51
|
+
type: :runtime
|
52
|
+
requirement: *id002
|
53
|
+
name: crack
|
45
54
|
- !ruby/object:Gem::Dependency
|
46
|
-
|
47
|
-
|
48
|
-
version_requirement:
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
50
57
|
requirements:
|
51
|
-
- -
|
58
|
+
- - ~>
|
52
59
|
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
60
|
+
hash: 15
|
61
|
+
segments:
|
62
|
+
- 1
|
63
|
+
- 4
|
64
|
+
- 4
|
65
|
+
version: 1.4.4
|
66
|
+
prerelease: false
|
67
|
+
type: :runtime
|
68
|
+
requirement: *id003
|
69
|
+
name: nokogiri
|
55
70
|
- !ruby/object:Gem::Dependency
|
56
|
-
|
57
|
-
|
58
|
-
version_requirement:
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
60
73
|
requirements:
|
61
|
-
- -
|
74
|
+
- - ~>
|
62
75
|
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
|
65
|
-
-
|
66
|
-
|
76
|
+
hash: 31
|
77
|
+
segments:
|
78
|
+
- 2
|
79
|
+
- 4
|
80
|
+
- 0
|
81
|
+
version: 2.4.0
|
82
|
+
prerelease: false
|
67
83
|
type: :development
|
68
|
-
|
69
|
-
|
84
|
+
requirement: *id004
|
85
|
+
name: rspec
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
70
89
|
requirements:
|
71
|
-
- -
|
90
|
+
- - ~>
|
72
91
|
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
|
75
|
-
-
|
76
|
-
|
92
|
+
hash: 49
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
- 8
|
96
|
+
- 7
|
97
|
+
version: 0.8.7
|
98
|
+
prerelease: false
|
77
99
|
type: :development
|
78
|
-
|
79
|
-
|
100
|
+
requirement: *id005
|
101
|
+
name: rake
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
80
105
|
requirements:
|
81
|
-
- -
|
106
|
+
- - ~>
|
82
107
|
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
|
108
|
+
hash: 15
|
109
|
+
segments:
|
110
|
+
- 1
|
111
|
+
- 6
|
112
|
+
- 0
|
113
|
+
version: 1.6.0
|
114
|
+
prerelease: false
|
115
|
+
type: :development
|
116
|
+
requirement: *id006
|
117
|
+
name: webmock
|
85
118
|
description: Ruby wrapper for the LinkedIn API
|
86
|
-
email:
|
119
|
+
email:
|
120
|
+
- wynn.netherland@gmail.com
|
121
|
+
- josh.kalderimis@gmail.com
|
87
122
|
executables: []
|
88
123
|
|
89
124
|
extensions: []
|
90
125
|
|
91
126
|
extra_rdoc_files:
|
92
|
-
- LICENSE
|
93
127
|
- README.markdown
|
128
|
+
- LICENSE
|
94
129
|
files:
|
130
|
+
- .autotest
|
131
|
+
- .document
|
132
|
+
- .gitignore
|
133
|
+
- Gemfile
|
95
134
|
- LICENSE
|
96
135
|
- README.markdown
|
97
136
|
- Rakefile
|
98
137
|
- VERSION
|
138
|
+
- changelog.markdown
|
139
|
+
- examples/authenticate.rb
|
140
|
+
- examples/network.rb
|
141
|
+
- examples/profile.rb
|
142
|
+
- examples/status.rb
|
99
143
|
- lib/linked_in/api_standard_profile_request.rb
|
144
|
+
- lib/linked_in/authorization_helpers.rb
|
145
|
+
- lib/linked_in/base.rb
|
146
|
+
- lib/linked_in/birthdate.rb
|
100
147
|
- lib/linked_in/client.rb
|
101
148
|
- lib/linked_in/company.rb
|
102
149
|
- lib/linked_in/connections.rb
|
103
150
|
- lib/linked_in/country.rb
|
151
|
+
- lib/linked_in/current_share.rb
|
104
152
|
- lib/linked_in/education.rb
|
105
153
|
- lib/linked_in/error.rb
|
106
154
|
- lib/linked_in/group.rb
|
155
|
+
- lib/linked_in/languages.rb
|
156
|
+
- lib/linked_in/likes.rb
|
107
157
|
- lib/linked_in/location.rb
|
158
|
+
- lib/linked_in/message.rb
|
108
159
|
- lib/linked_in/network.rb
|
160
|
+
- lib/linked_in/patents.rb
|
109
161
|
- lib/linked_in/people.rb
|
162
|
+
- lib/linked_in/person.rb
|
163
|
+
- lib/linked_in/phone_number.rb
|
110
164
|
- lib/linked_in/position.rb
|
111
165
|
- lib/linked_in/profile.rb
|
166
|
+
- lib/linked_in/publications.rb
|
167
|
+
- lib/linked_in/recipient.rb
|
168
|
+
- lib/linked_in/recipients.rb
|
169
|
+
- lib/linked_in/recommendations.rb
|
170
|
+
- lib/linked_in/request_helpers.rb
|
171
|
+
- lib/linked_in/short_profile.rb
|
172
|
+
- lib/linked_in/skill.rb
|
173
|
+
- lib/linked_in/to_xml_helpers.rb
|
112
174
|
- lib/linked_in/update.rb
|
113
175
|
- lib/linked_in/url_resource.rb
|
114
176
|
- lib/linkedin.rb
|
115
|
-
-
|
116
|
-
-
|
117
|
-
-
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
121
|
-
-
|
122
|
-
-
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
-
|
128
|
-
-
|
177
|
+
- linkedin.gemspec
|
178
|
+
- spec/cases/client_spec.rb
|
179
|
+
- spec/cases/linkedin_spec.rb
|
180
|
+
- spec/cases/oauth_spec.rb
|
181
|
+
- spec/fixtures/blank.xml
|
182
|
+
- spec/fixtures/connections.xml
|
183
|
+
- spec/fixtures/error.xml
|
184
|
+
- spec/fixtures/likes.xml
|
185
|
+
- spec/fixtures/mailbox_items.xml
|
186
|
+
- spec/fixtures/network_status_with_group.xml
|
187
|
+
- spec/fixtures/network_statuses.xml
|
188
|
+
- spec/fixtures/picture_updates.xml
|
189
|
+
- spec/fixtures/profile.xml
|
190
|
+
- spec/fixtures/profile_full.xml
|
191
|
+
- spec/fixtures/profile_with_positions.xml
|
192
|
+
- spec/fixtures/search.xml
|
193
|
+
- spec/fixtures/shares.xml
|
194
|
+
- spec/fixtures/status.xml
|
195
|
+
- spec/spec_helper.rb
|
129
196
|
has_rdoc: true
|
130
197
|
homepage: http://github.com/pengwynn/linkedin
|
131
198
|
licenses: []
|
@@ -136,29 +203,46 @@ rdoc_options:
|
|
136
203
|
require_paths:
|
137
204
|
- lib
|
138
205
|
required_ruby_version: !ruby/object:Gem::Requirement
|
206
|
+
none: false
|
139
207
|
requirements:
|
140
208
|
- - ">="
|
141
209
|
- !ruby/object:Gem::Version
|
210
|
+
hash: 3
|
211
|
+
segments:
|
212
|
+
- 0
|
142
213
|
version: "0"
|
143
|
-
version:
|
144
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
|
+
none: false
|
145
216
|
requirements:
|
146
217
|
- - ">="
|
147
218
|
- !ruby/object:Gem::Version
|
219
|
+
hash: 3
|
220
|
+
segments:
|
221
|
+
- 0
|
148
222
|
version: "0"
|
149
|
-
version:
|
150
223
|
requirements: []
|
151
224
|
|
152
225
|
rubyforge_project:
|
153
|
-
rubygems_version: 1.
|
226
|
+
rubygems_version: 1.5.0
|
154
227
|
signing_key:
|
155
228
|
specification_version: 3
|
156
229
|
summary: Ruby wrapper for the LinkedIn API
|
157
230
|
test_files:
|
158
|
-
-
|
159
|
-
-
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
-
|
164
|
-
-
|
231
|
+
- spec/cases/client_spec.rb
|
232
|
+
- spec/cases/linkedin_spec.rb
|
233
|
+
- spec/cases/oauth_spec.rb
|
234
|
+
- spec/fixtures/blank.xml
|
235
|
+
- spec/fixtures/connections.xml
|
236
|
+
- spec/fixtures/error.xml
|
237
|
+
- spec/fixtures/likes.xml
|
238
|
+
- spec/fixtures/mailbox_items.xml
|
239
|
+
- spec/fixtures/network_status_with_group.xml
|
240
|
+
- spec/fixtures/network_statuses.xml
|
241
|
+
- spec/fixtures/picture_updates.xml
|
242
|
+
- spec/fixtures/profile.xml
|
243
|
+
- spec/fixtures/profile_full.xml
|
244
|
+
- spec/fixtures/profile_with_positions.xml
|
245
|
+
- spec/fixtures/search.xml
|
246
|
+
- spec/fixtures/shares.xml
|
247
|
+
- spec/fixtures/status.xml
|
248
|
+
- spec/spec_helper.rb
|