linkedin 0.1.7 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/.autotest +14 -0
  2. data/.document +5 -0
  3. data/.gitignore +25 -0
  4. data/Gemfile +3 -0
  5. data/README.markdown +12 -7
  6. data/Rakefile +10 -33
  7. data/VERSION +1 -1
  8. data/changelog.markdown +38 -0
  9. data/examples/authenticate.rb +1 -1
  10. data/lib/linked_in/api_standard_profile_request.rb +14 -6
  11. data/lib/linked_in/authorization_helpers.rb +48 -0
  12. data/lib/linked_in/base.rb +13 -0
  13. data/lib/linked_in/birthdate.rb +21 -0
  14. data/lib/linked_in/client.rb +86 -146
  15. data/lib/linked_in/company.rb +9 -7
  16. data/lib/linked_in/connections.rb +14 -5
  17. data/lib/linked_in/country.rb +7 -5
  18. data/lib/linked_in/current_share.rb +56 -0
  19. data/lib/linked_in/education.rb +40 -14
  20. data/lib/linked_in/error.rb +19 -8
  21. data/lib/linked_in/group.rb +30 -7
  22. data/lib/linked_in/languages.rb +28 -0
  23. data/lib/linked_in/likes.rb +23 -0
  24. data/lib/linked_in/location.rb +11 -6
  25. data/lib/linked_in/message.rb +20 -0
  26. data/lib/linked_in/network.rb +10 -5
  27. data/lib/linked_in/patents.rb +42 -0
  28. data/lib/linked_in/people.rb +16 -8
  29. data/lib/linked_in/person.rb +7 -0
  30. data/lib/linked_in/phone_number.rb +29 -0
  31. data/lib/linked_in/position.rb +45 -14
  32. data/lib/linked_in/profile.rb +81 -28
  33. data/lib/linked_in/publications.rb +40 -0
  34. data/lib/linked_in/recipient.rb +7 -0
  35. data/lib/linked_in/recipients.rb +18 -0
  36. data/lib/linked_in/recommendations.rb +30 -0
  37. data/lib/linked_in/request_helpers.rb +76 -0
  38. data/lib/linked_in/short_profile.rb +13 -0
  39. data/lib/linked_in/skill.rb +33 -0
  40. data/lib/linked_in/to_xml_helpers.rb +53 -0
  41. data/lib/linked_in/update.rb +21 -9
  42. data/lib/linked_in/url_resource.rb +24 -6
  43. data/lib/linkedin.rb +58 -59
  44. data/linkedin.gemspec +52 -0
  45. data/spec/cases/client_spec.rb +281 -0
  46. data/spec/cases/linkedin_spec.rb +37 -0
  47. data/spec/cases/oauth_spec.rb +109 -0
  48. data/{test → spec}/fixtures/blank.xml +0 -0
  49. data/{test → spec}/fixtures/connections.xml +0 -0
  50. data/{test → spec}/fixtures/error.xml +0 -0
  51. data/spec/fixtures/likes.xml +18 -0
  52. data/spec/fixtures/mailbox_items.xml +16 -0
  53. data/{test → spec}/fixtures/network_status_with_group.xml +3 -3
  54. data/{test → spec}/fixtures/network_statuses.xml +18 -0
  55. data/{test → spec}/fixtures/picture_updates.xml +0 -0
  56. data/{test → spec}/fixtures/profile.xml +0 -0
  57. data/{test → spec}/fixtures/profile_full.xml +57 -0
  58. data/{test → spec}/fixtures/profile_with_positions.xml +0 -0
  59. data/{test → spec}/fixtures/search.xml +2 -2
  60. data/spec/fixtures/shares.xml +12 -0
  61. data/{test → spec}/fixtures/status.xml +0 -0
  62. data/spec/spec_helper.rb +49 -0
  63. metadata +160 -76
  64. data/test/client_test.rb +0 -124
  65. data/test/oauth_test.rb +0 -117
  66. 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
- <update>
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
@@ -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>
@@ -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
@@ -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
- version: 0.1.7
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-02-05 00:00:00 -06:00
19
+ date: 2010-03-01 00:00:00 +01:00
13
20
  default_executable:
14
21
  dependencies:
15
22
  - !ruby/object:Gem::Dependency
16
- name: oauth
17
- type: :runtime
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
- version: 0.3.5
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: roxml
28
+ hash: 15
29
+ segments:
30
+ - 0
31
+ - 4
32
+ - 0
33
+ version: 0.4.0
34
+ prerelease: false
27
35
  type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
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
- name: crack
37
- type: :runtime
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
- version:
50
+ prerelease: false
51
+ type: :runtime
52
+ requirement: *id002
53
+ name: crack
45
54
  - !ruby/object:Gem::Dependency
46
- name: thoughtbot-shoulda
47
- type: :development
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
- version: 2.10.1
54
- version:
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
- name: jnunemaker-matchy
57
- type: :development
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
- version: 0.4.0
64
- version:
65
- - !ruby/object:Gem::Dependency
66
- name: mocha
76
+ hash: 31
77
+ segments:
78
+ - 2
79
+ - 4
80
+ - 0
81
+ version: 2.4.0
82
+ prerelease: false
67
83
  type: :development
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
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
- version: 0.9.4
74
- version:
75
- - !ruby/object:Gem::Dependency
76
- name: fakeweb
92
+ hash: 49
93
+ segments:
94
+ - 0
95
+ - 8
96
+ - 7
97
+ version: 0.8.7
98
+ prerelease: false
77
99
  type: :development
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
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
- version: 1.2.5
84
- version:
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: wynn.netherland@gmail.com
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
- - test/client_test.rb
116
- - test/fixtures/blank.xml
117
- - test/fixtures/connections.xml
118
- - test/fixtures/error.xml
119
- - test/fixtures/network_status_with_group.xml
120
- - test/fixtures/network_statuses.xml
121
- - test/fixtures/picture_updates.xml
122
- - test/fixtures/profile.xml
123
- - test/fixtures/profile_full.xml
124
- - test/fixtures/profile_with_positions.xml
125
- - test/fixtures/search.xml
126
- - test/fixtures/status.xml
127
- - test/oauth_test.rb
128
- - test/test_helper.rb
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.3.5
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
- - test/client_test.rb
159
- - test/oauth_test.rb
160
- - test/test_helper.rb
161
- - examples/authenticate.rb
162
- - examples/network.rb
163
- - examples/profile.rb
164
- - examples/status.rb
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