linkedin2 0.0.3 → 0.0.4

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.
@@ -22,7 +22,7 @@ module LinkedIn
22
22
 
23
23
  module BaseConfiguration
24
24
  def configure(config={}, &block)
25
- self.config.marshal_load self.config.to_h.merge(config)
25
+ self.config.marshal_load self.config.marshal_dump.merge(config)
26
26
 
27
27
  yield self.config if block_given?
28
28
 
@@ -35,7 +35,7 @@ module LinkedIn
35
35
  end
36
36
 
37
37
  def defaults(*keys)
38
- config.to_h.slice *keys
38
+ config.marshal_dump.slice *keys
39
39
  end
40
40
  end
41
41
 
@@ -1,20 +1,19 @@
1
1
  module LinkedIn
2
2
  class Profile < Base
3
3
  def connections
4
- @connections ||= client.connections(selector: { id: self.id })['values'].map { |c| Profile.new c }
4
+ @connections ||= client.connections(id: self.id)['values'].map { |c| Profile.new c }
5
5
  end
6
6
 
7
7
  def self.current(*fields)
8
- find_by( { }, *fields)
8
+ find_by fields: Array[*fields]
9
9
  end
10
10
 
11
11
  def self.find(id, *fields)
12
- find_by( { id: id }, *fields)
12
+ find_by id: id, fields: Array[*fields]
13
13
  end
14
14
 
15
- def self.find_by(selector, *fields)
16
- fields = fields.blank? ? LinkedIn.r_basicprofile : fields
17
- Profile.new client.profile( selector: selector, fields: fields )
15
+ def self.find_by(options)
16
+ Profile.new client.profile( { fields: LinkedIn.r_basicprofile }.merge options)
18
17
  end
19
18
  end
20
19
  end
@@ -1,3 +1,3 @@
1
1
  module LinkedIn
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -25,8 +25,9 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_development_dependency 'bundler', '~> 1.3'
27
27
  spec.add_development_dependency 'rake'
28
- spec.add_development_dependency 'byebug'
29
28
  spec.add_development_dependency 'pry'
29
+ spec.add_development_dependency 'simplecov'
30
30
  spec.add_development_dependency 'rspec', '~> 2.14'
31
31
  spec.add_development_dependency 'vcr', '~> 2.5'
32
+ spec.add_development_dependency 'yard'
32
33
  end
@@ -1,24 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe LinkedIn::API::Companies do
4
- subject { LinkedIn::Client }
3
+ describe LinkedIn::API::Companies, vcr: { cassette_name: 'companies' } do
4
+ subject { LinkedIn::Client.new }
5
5
 
6
6
  describe '#company' do
7
- it "should be able to view a company profile" do
8
- pending "https://api.linkedin.com/v1/companies/id=1586"
9
- subject.company(:id => 1586)
7
+ it 'fetches a company profile by id' do
8
+ subject.company(selector: 162479)['name'].should eq 'Apple'
10
9
  end
11
10
 
12
- it "should be able to view a company by universal name" do
13
- pending "https://api.linkedin.com/v1/companies/universal-name=acme"
14
- subject.company(:name => 'acme')
11
+ it 'fetches a company profile by universal name' do
12
+ subject.company(selector: 'universal-name=linkedin')['name'].should eq 'LinkedIn'
15
13
  end
16
14
 
17
- it "should be able to view a company by e-mail domain" do
18
- pending "https://api.linkedin.com/v1/companies?email-domain=acme.com"
19
- subject.company(:domain => 'acme.com')
15
+ it 'fetches a company profile by e-mail domain' do
16
+ companies = subject.company(filter: 'email-domain=apple.com')
17
+ companies['values'].first['name'].should eq 'Apple'
20
18
  end
21
19
 
20
+ it 'fetches companies in bulk using their respective selectors' do
21
+ companies = subject.company(selector: [162479, 'universal-name=linkedin'])
22
+ companies['values'].collect { |c| c['name'] }.should eq ['Apple', 'LinkedIn']
23
+ end
24
+
25
+ it 'fetches companies that the current user is an adminstrator of' do
26
+ subject.company(filter: 'is-company-admin=true')['_total'].should eq 0
27
+ end
28
+ end
29
+
30
+ context 'todo' do
22
31
  it "should load correct company data" do
23
32
  pending
24
33
  data = subject.company(:id => 1586, :fields => %w{ id name industry locations:(address:(city state country-code) is-headquarters) employee-count-range })
@@ -2,6 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe LinkedIn::API::Groups do
4
4
  describe '#jobs' do
5
+ end
6
+
7
+ context 'todo' do
5
8
  it "should be able to list group memberships for a profile" do
6
9
  pending "https://api.linkedin.com/v1/people/~/group-memberships"
7
10
  subject.group_memberships
@@ -2,6 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe LinkedIn::API::Jobs do
4
4
  describe '#jobs' do
5
+ end
6
+
7
+ context 'todo' do
5
8
  it "should be able to view a job listing" do
6
9
  pending "https://api.linkedin.com/v1/jobs/id=1586"
7
10
  subject.job(:id => 1586)
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe LinkedIn::API::Profiles, vcr: { cassette_name: 'network_updates' } do
4
+ subject { LinkedIn::Client.new }
5
+
6
+ describe '#network_updates' do
7
+ it 'fetches network updates for the current user' do
8
+ network_updates = subject.network_updates
9
+ network_updates['_total'].should eq 13
10
+ network_updates['values'].should have(10).things
11
+ end
12
+
13
+ it 'fetches network updates by key' do
14
+ network_updates = subject.network_updates(selector: 'key=PROF-18939563-5794095336964247552-*1')
15
+ network_updates['updatedFields']['values'].should have(1).thing
16
+ end
17
+ end
18
+
19
+ describe '#network_update_comments' do
20
+ it 'fetches comments for network updates' do
21
+ comments = subject.network_update_comments(selector: 'key=PROF-18939563-5794095336964247552-*1')
22
+ comments['values'].first['comment'].should eq 'Whaaaat'
23
+ end
24
+ end
25
+
26
+ describe '#network_update_likes' do
27
+ it 'fetches "likes" for network updates' do
28
+ likes = subject.network_update_likes(selector: 'key=PROF-18939563-5794095336964247552-*1')
29
+ likes['values'].first['person']['id'].should eq 'cDmdM9cb0H'
30
+ end
31
+ end
32
+ end
@@ -1,39 +1,31 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe LinkedIn::API::Profiles do
4
- subject { LinkedIn::Client }
3
+ describe LinkedIn::API::Profiles, vcr: { cassette_name: 'profiles' } do
4
+ subject { LinkedIn::Client.new }
5
5
 
6
6
  describe '#profile' do
7
- it "should be able to view the account profile" do
8
- pending "https://api.linkedin.com/v1/people/~"
9
- subject.profile
10
- end
11
-
12
- it "should be able to view public profiles" do
13
- pending "https://api.linkedin.com/v1/people/id=123"
14
- subject.profile(:id => 123)
15
- end
7
+ it 'fetches the profile of the current user' do
8
+ profile = subject.profile
16
9
 
17
- it "should be able to view connections" do
18
- pending "https://api.linkedin.com/v1/people/~/connections"
19
- subject.connections
10
+ profile['firstName'].should eq 'Josh'
11
+ profile['lastName'].should eq 'Testjordan'
20
12
  end
21
13
 
22
- it "should be able to view network_updates" do
23
- pending "https://api.linkedin.com/v1/people/~/network/updates"
24
- subject.network_updates
25
- end
26
-
27
- it "should be able to view network_update's comments" do
28
- pending "https://api.linkedin.com/v1/people/~/network/updates/key=network_update_key/update-comments"
29
- subject.share_comments("network_update_key")
14
+ it 'fetches publicly available profiles' do
15
+ profile = subject.profile(selector: 'id=Fy5e5a4mqr')
16
+
17
+ profile['firstName'].should eq 'Sir Richard'
18
+ profile['lastName'].should eq 'B.'
30
19
  end
20
+ end
31
21
 
32
- it "should be able to view network_update's likes" do
33
- pending "https://api.linkedin.com/v1/people/~/network/updates/key=network_update_key/likes"
34
- subject.share_likes("network_update_key")
22
+ describe '#connections' do
23
+ it 'fetches the connections of the current user' do
24
+ subject.connections['values'].should have(2).things
35
25
  end
26
+ end
36
27
 
28
+ context 'todo' do
37
29
  it "should be able to search with a keyword if given a String" do
38
30
  pending "https://api.linkedin.com/v1/people-search?keywords=business"
39
31
  subject.search("business")
@@ -106,4 +98,22 @@ describe LinkedIn::API::Profiles do
106
98
  expect{ subject.search(:first_name => "Javan") }.to raise_error(LinkedIn::Forbidden)
107
99
  end
108
100
  end
109
- end
101
+
102
+ describe '#connections' do
103
+ it 'finds all connections for the current user' do
104
+ linkedin_keys = %w(id headline firstName lastName industry location pictureUrl siteStandardProfileRequest)
105
+ connections = subject.connections
106
+
107
+ connections['values'].should_not be_nil
108
+ connections['values'].first.keys.should include(*linkedin_keys)
109
+ end
110
+
111
+ it 'finds all connections for a user' do
112
+ linkedin_keys = %w(id headline firstName lastName industry location pictureUrl siteStandardProfileRequest)
113
+ connections = subject.connections
114
+
115
+ connections['values'].should_not be_nil
116
+ connections['values'].first.keys.should include(*linkedin_keys)
117
+ end
118
+ end
119
+ end
@@ -1,10 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe LinkedIn::FaradayMiddleware::LinkedinErrorResponse, vcr: { cassette_name: 'invalid' } do
4
+ subject { LinkedIn::Client.new(access_token: nil) }
5
+
4
6
  describe '#on_error' do
5
7
  it 'raises an error with the status and body reported by Rack included' do
6
8
  begin
7
- LinkedIn::Client.new.profile
9
+ subject.profile
10
+ raise 'Should have encountered an exception'
8
11
  rescue LinkedIn::Error => error
9
12
  error.status.should eq 401
10
13
  error.body.should eq({
@@ -19,7 +22,8 @@ describe LinkedIn::FaradayMiddleware::LinkedinErrorResponse, vcr: { cassette_nam
19
22
 
20
23
  it 'uses the message returned by LinkedIn' do
21
24
  begin
22
- LinkedIn::Client.new.profile
25
+ subject.profile
26
+ raise 'Should have encountered an exception'
23
27
  rescue LinkedIn::Error => err
24
28
  err.message.should eq 'Empty oauth2_access_token'
25
29
  end
@@ -27,7 +31,8 @@ describe LinkedIn::FaradayMiddleware::LinkedinErrorResponse, vcr: { cassette_nam
27
31
 
28
32
  it 'includes the Faraday request/response object for further introspection by the consumer' do
29
33
  begin
30
- LinkedIn::Client.new.profile
34
+ subject.profile
35
+ raise 'Should have encountered an exception'
31
36
  rescue LinkedIn::Error => err
32
37
  err.request.headers['User-Agent'].should eq 'Faraday v0.8.8'
33
38
  err.response.headers['Server'].should eq 'Apache-Coyote/1.1'
@@ -37,7 +42,8 @@ describe LinkedIn::FaradayMiddleware::LinkedinErrorResponse, vcr: { cassette_nam
37
42
  it 'includes the LinkedIn error code' do
38
43
  pending 'These appear to be broken, so fuck \'em. http://developer.linkedin.com/forum/error-codes-are-not-set'
39
44
  begin
40
- LinkedIn::Client.new.profile
45
+ subject.profile
46
+ raise 'Should have encountered an exception'
41
47
  rescue LinkedIn::Error => err
42
48
  pending 'we need to discuss camelCase vs snake_case. LinkedIn returns "errorCode"'
43
49
  err.error_code.should eq
@@ -2,36 +2,69 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://api.linkedin.com/uas/oauth/accessToken
5
+ uri: https://www.linkedin.com/uas/oauth2/accessToken?format=json
6
6
  body:
7
- encoding: US-ASCII
8
- string: ''
7
+ encoding: UTF-8
8
+ string: grant_type=authorization_code&code=AQRRBkP22yUFufYkxyFDgxg59jTJTMy4jCsp_2tz5W6CcEZ11gRysjPxbelKAXcXrcfDXKAyDZCctqzWsn-sYDB-galvVu192PkDGXI-lQh2-xq5AbM&client_id=f7cq90292zdf&client_secret=h97K0YuF0KCnx4kW&state=QrAOpIcMEEkqkFhPNPBpxBjoalApSrTdroLGGDWaCkqrdGKziH&redirect_uri=http%3A%2F%2Flocalhost.com
9
9
  headers:
10
10
  User-Agent:
11
- - OAuth gem v0.4.4
12
- Authorization:
13
- - OAuth oauth_body_hash="2jmj7l5rSw0yVb%2FvlWAYkK%2FYBwk%3D", oauth_consumer_key="eAI15DqRUTTd7OuQJBG3Mo0aw2Ekx5yoLX3x3NaLnbTnZbaU46OEii7uNTKijII4",
14
- oauth_nonce="ztYyddIoKJ8flDjBJyveOSqm96CLaEM4QpOC0CSW0E", oauth_signature="NSp3ZDtycelP7wsDM7dsuDTZGys%3D",
15
- oauth_signature_method="HMAC-SHA1", oauth_timestamp="1297095033", oauth_token="2f5b42dd-1e0e-4f8f-a03c-1e510bde5935",
16
- oauth_verifier="25038", oauth_version="1.0"
17
- Content-Length:
18
- - '0'
11
+ - Faraday v0.8.8
12
+ Content-Type:
13
+ - application/x-www-form-urlencoded
19
14
  response:
20
15
  status:
21
16
  code: 200
22
- message: OK
17
+ message:
23
18
  headers:
24
- Content-Type:
25
- - text/plain
26
- Server:
19
+ server:
27
20
  - Apache-Coyote/1.1
28
- Date:
29
- - Mon, 07 Feb 2011 16:10:34 GMT
30
- Content-Length:
31
- - '156'
21
+ p3p:
22
+ - CP="CAO DSP COR CUR ADMi DEVi TAIi PSAi PSDi IVAi IVDi CONi OUR DELi SAMi
23
+ UNRi PUBi OTRi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT POL PRE"
24
+ x-li-uuid:
25
+ - R9Fiq98P6oKapbEme8kcTw==
26
+ vary:
27
+ - Accept-Encoding
28
+ content-type:
29
+ - application/json;charset=UTF-8
30
+ content-language:
31
+ - en-US
32
+ content-length:
33
+ - '219'
34
+ date:
35
+ - Sun, 13 Oct 2013 19:58:00 GMT
36
+ x-li-fabric:
37
+ - PROD-ELA4
38
+ access-control-allow-origin:
39
+ - https://www.linkedin.com
40
+ set-cookie:
41
+ - _lipt=deleteMe; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/, leo_auth_token="GST:8zAnyikKuhU_QXD8caLFg5R6Shfg4nvQwTAFyUkoWhfoCnP0vYCB2T:1381694281:027f4c0540de42a5015b97b34d6fdb35a3f6cde1";
42
+ Version=1; Max-Age=1799; Expires=Sun, 13-Oct-2013 20:28:00 GMT; Path=/, sl="delete
43
+ me"; Version=1; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/,
44
+ sl="delete me"; Version=1; Domain=.www.linkedin.com; Max-Age=0; Expires=Thu,
45
+ 01-Jan-1970 00:00:10 GMT; Path=/, s_leo_auth_token="delete me"; Version=1;
46
+ Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/, JSESSIONID="ajax:7115608698667287816";
47
+ Version=1; Path=/, visit="v=1&G"; Version=1; Max-Age=63072000; Expires=Tue,
48
+ 13-Oct-2015 19:58:01 GMT; Path=/, lang="v=2&lang=en-us"; Version=1; Domain=linkedin.com;
49
+ Path=/, bcookie="v=2&2ae0fd35-d407-46fe-8106-8f393d734de0"; domain=.linkedin.com;
50
+ Path=/; Expires=Wed, 14-Oct-2015 07:35:33 GMT, bscookie="v=1&20131013195801a1d173a8-de6e-4c88-8566-07e358e74e94AQGbJ5HTwrq6Oj8iv3TepmjPiLZ_KHDn";
51
+ domain=.www.linkedin.com; Path=/; Secure; Expires=Wed, 14-Oct-2015 07:35:33
52
+ GMT; HttpOnly, X-LI-IDC=C1
53
+ pragma:
54
+ - no-cache
55
+ expires:
56
+ - Thu, 01 Jan 1970 00:00:00 GMT
57
+ cache-control:
58
+ - no-cache, no-store
59
+ age:
60
+ - '1'
61
+ connection:
62
+ - keep-alive
63
+ x-li-pop:
64
+ - PROD-ELA4
32
65
  body:
33
66
  encoding: UTF-8
34
- string: oauth_token=28774cd4-fbe1-4e6e-a05e-1243f6471933&oauth_token_secret=2fafe259-976e-41ad-a6f5-d26bbba42923&oauth_expires_in=0&oauth_authorization_expires_in=0
35
- http_version: '1.1'
36
- recorded_at: Wed, 10 Apr 2013 22:06:51 GMT
67
+ string: '{"expires_in":5183999,"access_token":"AQUJwEF40pJUbVxsW_mujQ3QCiXvlTnMFk55SlfVPYRcAPdsn1oE1Hm8Ldlc61o57k96i04ufG81KFdPJIOSJswXsGyZ0tk9IMZea8sfNXMGMnZgikQJUQPkmRVYVw9BP1qH9tp7hJF32DQtzkBB_NE8xPASPVgXVWbbntChGyYqqDvF1p8"}'
68
+ http_version:
69
+ recorded_at: Sun, 13 Oct 2013 19:58:08 GMT
37
70
  recorded_with: VCR 2.5.0
@@ -0,0 +1,258 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.linkedin.com/v1/companies/162479?oauth2_access_token=AQUJwEF40pJUbVxsW_mujQ3QCiXvlTnMFk55SlfVPYRcAPdsn1oE1Hm8Ldlc61o57k96i04ufG81KFdPJIOSJswXsGyZ0tk9IMZea8sfNXMGMnZgikQJUQPkmRVYVw9BP1qH9tp7hJF32DQtzkBB_NE8xPASPVgXVWbbntChGyYqqDvF1p8&format=json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.8
12
+ response:
13
+ status:
14
+ code: 200
15
+ message:
16
+ headers:
17
+ server:
18
+ - Apache-Coyote/1.1
19
+ x-li-request-id:
20
+ - N1V0MZE9K9
21
+ vary:
22
+ - '*'
23
+ x-li-format:
24
+ - json
25
+ content-type:
26
+ - application/json;charset=UTF-8
27
+ date:
28
+ - Tue, 15 Oct 2013 03:40:31 GMT
29
+ x-li-fabric:
30
+ - PROD-ELA4
31
+ access-control-allow-origin:
32
+ - https://www.linkedin.com
33
+ age:
34
+ - '1'
35
+ transfer-encoding:
36
+ - chunked
37
+ connection:
38
+ - keep-alive
39
+ x-li-pop:
40
+ - PROD-ELA4
41
+ x-li-uuid:
42
+ - +NPyvHIrLRMQGxdMPysAAA==
43
+ body:
44
+ encoding: UTF-8
45
+ string: |-
46
+ {
47
+ "id": 162479,
48
+ "name": "Apple"
49
+ }
50
+ http_version:
51
+ recorded_at: Tue, 15 Oct 2013 03:40:32 GMT
52
+ - request:
53
+ method: get
54
+ uri: https://api.linkedin.com/v1/companies/universal-name=linkedin?oauth2_access_token=AQUJwEF40pJUbVxsW_mujQ3QCiXvlTnMFk55SlfVPYRcAPdsn1oE1Hm8Ldlc61o57k96i04ufG81KFdPJIOSJswXsGyZ0tk9IMZea8sfNXMGMnZgikQJUQPkmRVYVw9BP1qH9tp7hJF32DQtzkBB_NE8xPASPVgXVWbbntChGyYqqDvF1p8&format=json
55
+ body:
56
+ encoding: US-ASCII
57
+ string: ''
58
+ headers:
59
+ User-Agent:
60
+ - Faraday v0.8.8
61
+ response:
62
+ status:
63
+ code: 200
64
+ message:
65
+ headers:
66
+ server:
67
+ - Apache-Coyote/1.1
68
+ x-li-request-id:
69
+ - DESJS1FXJO
70
+ vary:
71
+ - '*'
72
+ x-li-format:
73
+ - json
74
+ content-type:
75
+ - application/json;charset=UTF-8
76
+ date:
77
+ - Tue, 15 Oct 2013 03:40:32 GMT
78
+ x-li-fabric:
79
+ - PROD-ELA4
80
+ access-control-allow-origin:
81
+ - https://www.linkedin.com
82
+ age:
83
+ - '0'
84
+ transfer-encoding:
85
+ - chunked
86
+ connection:
87
+ - keep-alive
88
+ x-li-pop:
89
+ - PROD-ELA4
90
+ x-li-uuid:
91
+ - SGFU2HIrLRMQ+MRPbCsAAA==
92
+ body:
93
+ encoding: UTF-8
94
+ string: |-
95
+ {
96
+ "id": 1337,
97
+ "name": "LinkedIn"
98
+ }
99
+ http_version:
100
+ recorded_at: Tue, 15 Oct 2013 03:40:33 GMT
101
+ - request:
102
+ method: get
103
+ uri: https://api.linkedin.com/v1/companies/?email-domain=apple.com&oauth2_access_token=AQUJwEF40pJUbVxsW_mujQ3QCiXvlTnMFk55SlfVPYRcAPdsn1oE1Hm8Ldlc61o57k96i04ufG81KFdPJIOSJswXsGyZ0tk9IMZea8sfNXMGMnZgikQJUQPkmRVYVw9BP1qH9tp7hJF32DQtzkBB_NE8xPASPVgXVWbbntChGyYqqDvF1p8&format=json
104
+ body:
105
+ encoding: US-ASCII
106
+ string: ''
107
+ headers:
108
+ User-Agent:
109
+ - Faraday v0.8.8
110
+ response:
111
+ status:
112
+ code: 200
113
+ message:
114
+ headers:
115
+ server:
116
+ - Apache-Coyote/1.1
117
+ x-li-request-id:
118
+ - UJJKFZAATN
119
+ vary:
120
+ - '*'
121
+ x-li-format:
122
+ - json
123
+ content-type:
124
+ - application/json;charset=UTF-8
125
+ date:
126
+ - Tue, 15 Oct 2013 03:40:33 GMT
127
+ x-li-fabric:
128
+ - PROD-ELA4
129
+ access-control-allow-origin:
130
+ - https://www.linkedin.com
131
+ age:
132
+ - '0'
133
+ transfer-encoding:
134
+ - chunked
135
+ connection:
136
+ - keep-alive
137
+ x-li-pop:
138
+ - PROD-ELA4
139
+ x-li-uuid:
140
+ - QEui83IrLRPQPik+aCsAAA==
141
+ body:
142
+ encoding: UTF-8
143
+ string: |-
144
+ {
145
+ "_total": 1,
146
+ "values": [{
147
+ "id": 162479,
148
+ "name": "Apple"
149
+ }]
150
+ }
151
+ http_version:
152
+ recorded_at: Tue, 15 Oct 2013 03:40:33 GMT
153
+ - request:
154
+ method: get
155
+ uri: https://api.linkedin.com/v1/companies::(162479,universal-name=linkedin)?oauth2_access_token=AQUJwEF40pJUbVxsW_mujQ3QCiXvlTnMFk55SlfVPYRcAPdsn1oE1Hm8Ldlc61o57k96i04ufG81KFdPJIOSJswXsGyZ0tk9IMZea8sfNXMGMnZgikQJUQPkmRVYVw9BP1qH9tp7hJF32DQtzkBB_NE8xPASPVgXVWbbntChGyYqqDvF1p8&format=json
156
+ body:
157
+ encoding: US-ASCII
158
+ string: ''
159
+ headers:
160
+ User-Agent:
161
+ - Faraday v0.8.8
162
+ response:
163
+ status:
164
+ code: 200
165
+ message:
166
+ headers:
167
+ server:
168
+ - Apache-Coyote/1.1
169
+ x-li-request-id:
170
+ - DWXJHGBALM
171
+ vary:
172
+ - '*'
173
+ x-li-format:
174
+ - json
175
+ content-type:
176
+ - application/json;charset=UTF-8
177
+ date:
178
+ - Tue, 15 Oct 2013 03:40:33 GMT
179
+ x-li-fabric:
180
+ - PROD-ELA4
181
+ access-control-allow-origin:
182
+ - https://www.linkedin.com
183
+ age:
184
+ - '0'
185
+ transfer-encoding:
186
+ - chunked
187
+ connection:
188
+ - keep-alive
189
+ x-li-pop:
190
+ - PROD-ELA4
191
+ x-li-uuid:
192
+ - IAccEHMrLROQZ6WF5SoAAA==
193
+ body:
194
+ encoding: UTF-8
195
+ string: |-
196
+ {
197
+ "_total": 2,
198
+ "values": [
199
+ {
200
+ "_key": "162479",
201
+ "id": 162479,
202
+ "name": "Apple"
203
+ },
204
+ {
205
+ "_key": "universal-name=linkedin",
206
+ "id": 1337,
207
+ "name": "LinkedIn"
208
+ }
209
+ ]
210
+ }
211
+ http_version:
212
+ recorded_at: Tue, 15 Oct 2013 03:40:33 GMT
213
+ - request:
214
+ method: get
215
+ uri: https://api.linkedin.com/v1/companies/?is-company-admin=true&oauth2_access_token=AQUJwEF40pJUbVxsW_mujQ3QCiXvlTnMFk55SlfVPYRcAPdsn1oE1Hm8Ldlc61o57k96i04ufG81KFdPJIOSJswXsGyZ0tk9IMZea8sfNXMGMnZgikQJUQPkmRVYVw9BP1qH9tp7hJF32DQtzkBB_NE8xPASPVgXVWbbntChGyYqqDvF1p8&format=json
216
+ body:
217
+ encoding: US-ASCII
218
+ string: ''
219
+ headers:
220
+ User-Agent:
221
+ - Faraday v0.8.8
222
+ response:
223
+ status:
224
+ code: 200
225
+ message:
226
+ headers:
227
+ server:
228
+ - Apache-Coyote/1.1
229
+ x-li-request-id:
230
+ - 3ETOCDSKOJ
231
+ vary:
232
+ - '*'
233
+ x-li-format:
234
+ - json
235
+ content-type:
236
+ - application/json;charset=UTF-8
237
+ date:
238
+ - Tue, 15 Oct 2013 03:40:33 GMT
239
+ x-li-fabric:
240
+ - PROD-ELA4
241
+ access-control-allow-origin:
242
+ - https://www.linkedin.com
243
+ age:
244
+ - '1'
245
+ transfer-encoding:
246
+ - chunked
247
+ connection:
248
+ - keep-alive
249
+ x-li-pop:
250
+ - PROD-ELA4
251
+ x-li-uuid:
252
+ - SPkTK3MrLROwwBi8gSsAAA==
253
+ body:
254
+ encoding: UTF-8
255
+ string: '{"_total": 0}'
256
+ http_version:
257
+ recorded_at: Tue, 15 Oct 2013 03:40:34 GMT
258
+ recorded_with: VCR 2.5.0