linkedin-v2 0.1.3 → 0.1.8

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.
Files changed (36) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -4
  3. data/lib/linked_in/api.rb +14 -8
  4. data/lib/linked_in/api_resource.rb +1 -1
  5. data/lib/linked_in/media.rb +47 -0
  6. data/lib/linked_in/organizations.rb +9 -0
  7. data/lib/linked_in/raise_error.rb +1 -2
  8. data/lib/linked_in/share_and_social_stream.rb +34 -4
  9. data/lib/linked_in/version.rb +1 -1
  10. data/linkedin-v2.gemspec +2 -1
  11. data/spec/linked_in/api/media_spec.rb +19 -0
  12. data/spec/vcr_cassettes/access_token_success.yml +19 -19
  13. data/spec/vcr_cassettes/bad_code.yml +18 -18
  14. data/spec/vcr_cassettes/organization_data.yml +7 -7
  15. data/spec/vcr_cassettes/people_picture_urls.yml +8 -8
  16. data/spec/vcr_cassettes/people_profile_connections_fields.yml +7 -7
  17. data/spec/vcr_cassettes/people_profile_connections_other.yml +8 -8
  18. data/spec/vcr_cassettes/people_profile_connections_self.yml +7 -7
  19. data/spec/vcr_cassettes/people_profile_fields_complex.yml +7 -7
  20. data/spec/vcr_cassettes/people_profile_fields_simple.yml +8 -8
  21. data/spec/vcr_cassettes/people_profile_lang_spanish.yml +7 -7
  22. data/spec/vcr_cassettes/people_profile_multiple_fields.yml +7 -7
  23. data/spec/vcr_cassettes/people_profile_multiple_uids.yml +8 -8
  24. data/spec/vcr_cassettes/people_profile_multiple_uids_and_urls.yml +7 -7
  25. data/spec/vcr_cassettes/people_profile_multiple_urls.yml +7 -7
  26. data/spec/vcr_cassettes/people_profile_new_connections_fields.yml +7 -7
  27. data/spec/vcr_cassettes/people_profile_new_connections_other.yml +8 -8
  28. data/spec/vcr_cassettes/people_profile_new_connections_self.yml +8 -8
  29. data/spec/vcr_cassettes/people_profile_other_uid.yml +8 -8
  30. data/spec/vcr_cassettes/people_profile_other_url.yml +7 -7
  31. data/spec/vcr_cassettes/people_profile_own.yml +8 -8
  32. data/spec/vcr_cassettes/people_profile_own_secure.yml +7 -7
  33. data/spec/vcr_cassettes/people_profile_skills.yml +7 -7
  34. data/spec/vcr_cassettes/unavailable.yml +19 -19
  35. metadata +24 -10
  36. data/pkg/linkedin-oauth2-2.0.0.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 188d3b8c708aa23a58b655c5e2196919bb9bba99
4
- data.tar.gz: b8391342b546d18f5b8c322a002a81d262863745
2
+ SHA256:
3
+ metadata.gz: 42b4c574ad2d2ee7cc50f9a32e6c6f4a629af4b6e142e80381c63741d82e442a
4
+ data.tar.gz: 1e88833b29d4cc2fc1a3abf5d683b7c0eb162dfeb4d920769791e358573f53b1
5
5
  SHA512:
6
- metadata.gz: ca09e965f66642dfc2dec5d63554be7980a828e6f0c4cfc6d2e20f8bc923209971013319131e0e2f10469e163c03fb958b3fa100d368252d15b431b232e2cc40
7
- data.tar.gz: e2cc077b53c6e9bf080d73822e18fcad500e6a5a6a1d9f8abf71da3ade3d1d1082268fed3aabea01cf5bdb38f03b1629c75e15923e86ea61715415a009556140
6
+ metadata.gz: 6a51bcf6c85c15d1f0ec293643bdf787cb9178af14677c5226bba05142197177533c90c396f2883c09e7a25fac60a4d626e804795a542a9b8e8e4f2c7388edfe
7
+ data.tar.gz: 2caec4518eeacb780d167dfb90dc8c051aaf91964f4e6665af85ca12618c1ff430e92f6b39438669af87240798069b61f88e7ba16640f5eb5b855b09cb1a1cc6
data/README.md CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  ## WARNING: DANGER WILL ROBINSON
4
4
 
5
- This is very much a work in progress. Currently only the shares/social stream
6
- and organization related endpoints have been verified to work. Having said that,
7
- those endpoints are using this gem in a production application, so they're
8
- reliable enough. :)
5
+ This is very much a work in progress. Currently only the shares/social stream,
6
+ organization, and media upload related endpoints have been verified to work.
7
+ Having said that, those endpoints are using this gem in a production application,
8
+ so they're reliable enough. :)
9
9
 
10
10
  Many endpoints still need to be written, and as I don't have the requisite partner
11
11
  status w/ LinkedIn, I can't develop against the jobs API. Many of the specs still
@@ -8,8 +8,11 @@ module LinkedIn
8
8
  verify_access_token!(access_token)
9
9
  @access_token = access_token
10
10
 
11
- @connection = LinkedIn::Connection.new params: default_params,
12
- headers: default_headers
11
+ @connection =
12
+ LinkedIn::Connection.new params: default_params, headers: default_headers do |conn|
13
+ conn.request :multipart
14
+ conn.adapter Faraday.default_adapter
15
+ end
13
16
 
14
17
  initialize_endpoints
15
18
  end
@@ -45,7 +48,8 @@ module LinkedIn
45
48
  :organization_search,
46
49
  :organization_page_statistics,
47
50
  :organization_follower_statistics,
48
- :organization_share_statistics
51
+ :organization_share_statistics,
52
+ :organization_follower_count
49
53
 
50
54
  def_delegators :@communications, :send_message
51
55
 
@@ -55,11 +59,13 @@ module LinkedIn
55
59
  :like,
56
60
  :unlike,
57
61
  :comments,
58
- :comment
59
- # :update_comment,
60
- # :network_updates
62
+ :comment,
63
+ :get_share,
64
+ :get_social_actions,
65
+ :migrate_update_keys
61
66
 
62
- def_delegators :@media, :summary
67
+ def_delegators :@media, :summary,
68
+ :upload
63
69
 
64
70
  private ##############################################################
65
71
 
@@ -67,11 +73,11 @@ module LinkedIn
67
73
  @jobs = LinkedIn::Jobs.new(@connection)
68
74
  @people = LinkedIn::People.new(@connection)
69
75
  @search = LinkedIn::Search.new(@connection)
70
- # @groups = LinkedIn::Groups.new(@connection) not supported by v2 API?
71
76
  @organizations = LinkedIn::Organizations.new(@connection)
72
77
  @communications = LinkedIn::Communications.new(@connection)
73
78
  @share_and_social_stream = LinkedIn::ShareAndSocialStream.new(@connection)
74
79
  @media = LinkedIn::Media.new(@connection)
80
+ # @groups = LinkedIn::Groups.new(@connection) not supported by v2 API?
75
81
  end
76
82
 
77
83
  def default_params
@@ -72,7 +72,7 @@ module LinkedIn
72
72
  def delete(path=nil, body=nil, headers=nil, &block)
73
73
  # @connection.delete(prepend_prefix(path), params, headers, &block)
74
74
  # To be able to DELETE with a body:
75
- reponse = @connection.run_request(:delete, prepend_prefix(path), body, headers, &block)
75
+ response = @connection.run_request(:delete, prepend_prefix(path), body, headers, &block)
76
76
 
77
77
  Mash.from_json(response.body)
78
78
  end
@@ -1,4 +1,8 @@
1
+ require 'mime/types'
2
+
1
3
  module LinkedIn
4
+ DEFAULT_TIMEOUT_SECONDS = 300
5
+
2
6
  # Rich Media APIs
3
7
  #
4
8
  # @see https://developer.linkedin.com/docs/guide/v2/shares/rich-media-shares
@@ -9,5 +13,48 @@ module LinkedIn
9
13
  path = "/richMediaSummariesV2/#{options.delete(:id)}"
10
14
  get(path, options)
11
15
  end
16
+
17
+ # Uploads rich media content to LinkedIn from a supplied URL.
18
+ #
19
+ # @see https://developer.linkedin.com/docs/guide/v2/shares/rich-media-shares#upload
20
+ #
21
+ # @options options [String] :source_url, the URL to the content to be uploaded.
22
+ # @options options [Numeric] :timeout, optional timeout value in seconds, defaults to 300.
23
+ # @options options [String] :disposition_filename, the name of the file to be uploaded. Defaults to the basename of the URL filename.
24
+ # @return [LinkedIn::Mash]
25
+ #
26
+ def upload(options = {})
27
+ source_url = options.delete(:source_url)
28
+ timeout = options.delete(:timeout) || DEFAULT_TIMEOUT_SECONDS
29
+ media_upload_endpoint = LinkedIn.config.api + '/media/upload'
30
+ response =
31
+ @connection.post(media_upload_endpoint, file: file(source_url, options)) do |req|
32
+ req.headers['Accept'] = 'application/json'
33
+ req.options.timeout = timeout
34
+ req.options.open_timeout = timeout
35
+ end
36
+ Mash.from_json(response.body)
37
+ end
38
+
39
+ private
40
+
41
+ def upload_filename(media)
42
+ File.basename(media.base_uri.request_uri)
43
+ end
44
+
45
+ def extension(media)
46
+ upload_filename(media).split('.').last
47
+ end
48
+
49
+ def content_type(media)
50
+ ::MIME::Types.type_for(extension(media)).first.content_type
51
+ end
52
+
53
+ def file(source_url, options)
54
+ media = open(source_url, 'rb')
55
+ io = StringIO.new(media.read)
56
+ filename = options.delete(:disposition_filename) || upload_filename(media)
57
+ Faraday::UploadIO.new(io, content_type(media), filename)
58
+ end
12
59
  end
13
60
  end
@@ -113,6 +113,15 @@ module LinkedIn
113
113
  get(path, options)
114
114
  end
115
115
 
116
+ # Retrieve Organization Follower Count
117
+ #
118
+ # https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/organization-lookup-api#retrieve-organization-follower-count
119
+ #
120
+ def organization_follower_count organization_urn
121
+ path = "/networkSizes/#{organization_urn}?edgeType=CompanyFollowedByMember"
122
+ get(path)
123
+ end
124
+
116
125
  # TODO MOVE TO SOCIAL ACTIONS.
117
126
  #
118
127
  # # Retrieve comments on a particular company update:
@@ -14,8 +14,7 @@ module LinkedIn
14
14
  when 404
15
15
  raise LinkedIn::NotFoundError.new(data), "(#{data.status}): #{data.message}"
16
16
  when 500
17
- raise LinkedIn::InformLinkedInError.new(data),
18
- "LinkedIn had an internal error. Please let them know in the forum. (#{data.status}): #{data.message}"
17
+ raise LinkedIn::InformLinkedInError.new(data), "LinkedIn had an internal error. (#{data.status}): #{data.message}"
19
18
  when 502..504
20
19
  raise LinkedIn::UnavailableError.new(data), "(#{data.status}): #{data.message}"
21
20
  else
@@ -36,6 +36,16 @@ module LinkedIn
36
36
  get(path, options)
37
37
  end
38
38
 
39
+ # Retrieve Share by ID
40
+ #
41
+ # https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/share-api#look-up-share-by-id
42
+ #
43
+ def get_share(options = {})
44
+ id = options.delete(:id)
45
+ path = "/shares/#{id}"
46
+ get(path, options)
47
+ end
48
+
39
49
  # Create one share from a person, organization, or organizationBrand.
40
50
  #
41
51
  # Permissions:
@@ -60,6 +70,15 @@ module LinkedIn
60
70
  post(path, MultiJson.dump(defaults.merge(options)), 'Content-Type' => 'application/json')
61
71
  end
62
72
 
73
+ # Retrieve a Summary of Social Actions
74
+ #
75
+ # https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/network-update-social-actions#retrieve-a-summary-of-social-actions
76
+ #
77
+ def get_social_actions share_urns
78
+ path = '/socialActions'
79
+ get(path, ids: share_urns)
80
+ end
81
+
63
82
  # Retrieves the likes for a specific post.
64
83
  #
65
84
  # @see https://developer.linkedin.com/docs/guide/v2/shares/network-update-social-actions#retrieve
@@ -122,6 +141,7 @@ module LinkedIn
122
141
  #
123
142
  # @option options [String] :urn, specifies activity queried for comments (e.g.,
124
143
  # urn:li:article:123)
144
+ # @option options [String] :parent_comment, specifies the urn of the parent comment
125
145
  # @option options [String] :actor, specifies the entity performing the action. It should b # represented by a urn:li:person:{id} or urn:li:organization:{id} URN.
126
146
  # @option options [String] :message, the text content of the comment.
127
147
  #
@@ -129,15 +149,25 @@ module LinkedIn
129
149
  urn = options.delete(:urn)
130
150
  actor = options.delete(:actor)
131
151
  message = options.delete(:message)
152
+ parent_comment = options.delete(:parent_comment)
153
+
132
154
  body = {
133
155
  actor: actor,
134
- message: {
135
- attributes: [],
136
- text: message
137
- }
156
+ message: { text: message }
138
157
  }
158
+ body.merge!(parentComment: parent_comment) if parent_comment
159
+
139
160
  path = "/socialActions/#{urn}/comments"
140
161
  post(path, MultiJson.dump(body), 'Content-Type' => 'application/json')
141
162
  end
163
+
164
+ # Migrate from Update Keys to Share URNs
165
+ #
166
+ # https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/share-api#migrate-from-update-keys-to-share-urns
167
+ #
168
+ def migrate_update_keys update_keys
169
+ path = '/activities'
170
+ get(path, ids: update_keys)
171
+ end
142
172
  end
143
173
  end
@@ -1,3 +1,3 @@
1
1
  module LinkedIn
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.8'
3
3
  end
@@ -22,7 +22,8 @@ Gem::Specification.new do |gem|
22
22
 
23
23
  gem.add_dependency "oauth2", "~> 1.0"
24
24
  gem.add_dependency "hashie", "~> 3.2"
25
- gem.add_dependency "faraday", "~> 0.11"
25
+ gem.add_dependency "faraday", "~> 1.0"
26
+ gem.add_dependency 'mime-types', '>= 1.16'
26
27
 
27
28
  gem.add_development_dependency "rake"
28
29
  gem.add_development_dependency "rspec", "~> 3.0"
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe LinkedIn::Media do
4
+ let(:access_token) { 'dummy_access_token' }
5
+ let(:api) { LinkedIn::API.new(access_token) }
6
+ let(:base_uri) { double('uri', request_uri: 'http://example.org/elvis.png') }
7
+ let(:media) { double('media', size: 2048, base_uri: base_uri).as_null_object }
8
+
9
+ before do
10
+ allow_any_instance_of(LinkedIn::Media).to receive(:open).and_return(media)
11
+ end
12
+
13
+ it "should be able to upload media" do
14
+ result = '{"location": "urn:li:richMediaSummary:PNG-IMG-54f022ae8b3f4d479e925b4df68e19"}'
15
+ stub_request(:post, 'https://api.linkedin.com/media/upload').to_return(body: result)
16
+ expect(api.upload(source_url: "#{File.dirname(__FILE__)}/../../fixtures/elvis.jpg"))
17
+ .to eq("location" => "urn:li:richMediaSummary:PNG-IMG-54f022ae8b3f4d479e925b4df68e19")
18
+ end
19
+ end
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: client_id=dummy_client_id&client_secret=dummy_client_secret&code=dummy_code&grant_type=authorization_code&raise_errors=true&redirect_uri=http%3A%2F%2Flvh.me%3A5000
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.10.1
11
+ - Faraday v0.12.2
12
12
  Content-Type:
13
13
  - application/x-www-form-urlencoded
14
14
  Accept-Encoding:
@@ -31,11 +31,11 @@ http_interactions:
31
31
  Content-Language:
32
32
  - en-US
33
33
  Content-Length:
34
- - '249'
34
+ - '250'
35
35
  Date:
36
- - Tue, 01 May 2018 14:17:43 GMT
36
+ - Mon, 21 May 2018 18:34:12 GMT
37
37
  X-Fs-Uuid:
38
- - bf6c5d0f028b2a1590a6467fed2a0000
38
+ - b3043c399cbc3015206fa4ea4e2b0000
39
39
  Strict-Transport-Security:
40
40
  - max-age=2592000
41
41
  X-Content-Type-Options:
@@ -55,23 +55,23 @@ http_interactions:
55
55
  - prod-lva1
56
56
  Set-Cookie:
57
57
  - _lipt=deleteMe; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
58
- - bcookie="v=2&4205eb48-a5ea-4f29-8108-bdfdfa79cb24"; domain=.linkedin.com;
59
- Path=/; Expires=Fri, 01-May-2020 01:55:16 GMT
60
- - bscookie="v=1&2018050114174418ef52dd-1a5f-4006-8862-b07f2a68ddb5AQHI6jMgrQdgDs4at9XOvrB5TRYgPKiD";
61
- domain=.www.linkedin.com; Path=/; Secure; Expires=Fri, 01-May-2020 01:55:16
58
+ - bcookie="v=2&d345bb0e-f6ab-4db4-8542-b2d8828d9ef7"; domain=.linkedin.com;
59
+ Path=/; Expires=Thu, 21-May-2020 06:11:44 GMT
60
+ - bscookie="v=1&20180521183412b52aae88-48da-4286-8db2-061da5448518AQGWqF-B9sPcwFJhUavo9sVoIjQyDp85";
61
+ domain=.www.linkedin.com; Path=/; Secure; Expires=Thu, 21-May-2020 06:11:44
62
62
  GMT; HttpOnly
63
63
  - lang="v=2&lang=en-us"; Version=1; Domain=linkedin.com; Path=/
64
- - leo_auth_token="GST:9_uuYMY1IHLX3WGEWhw56CYD9pzSzwHlqgPFBfHnswzOSBPKGsvR-1:1525184264:70fd3e80ad474c238a910ff8c3bfc9cfcdddafac";
65
- Version=1; Max-Age=1799; Expires=Tue, 01-May-2018 14:47:43 GMT; Path=/
66
- - lidc="b=VB58:g=1209:u=1:i=1525184264:t=1525270664:s=AQHROYZbcdNtaKeDJC52E_vpC8G6Ta6l";
67
- Expires=Wed, 02 May 2018 14:17:44 GMT; domain=.linkedin.com; Path=/
64
+ - leo_auth_token="GST:UyjqklGyV7ZhRm4cfodqmZVJMh81RSaxFvjAKiPYm_ZPjmJQ8751kl:1526927652:fea5cbfed9b9ee17e26498280dfcb52f7bf0da84";
65
+ Version=1; Max-Age=1799; Expires=Mon, 21-May-2018 19:04:11 GMT; Path=/
66
+ - lidc="b=VB31:g=1614:u=1:i=1526927652:t=1527014052:s=AQEyvgLLWsw0KAkIo0IRU0oyq8wudtmV";
67
+ Expires=Tue, 22 May 2018 18:34:12 GMT; domain=.linkedin.com; Path=/
68
68
  - s_leo_auth_token="delete me"; Version=1; Max-Age=0; Expires=Thu, 01-Jan-1970
69
69
  00:00:10 GMT; Path=/
70
70
  - sl="delete me"; Version=1; Domain=.www.linkedin.com; Max-Age=0; Expires=Thu,
71
71
  01-Jan-1970 00:00:10 GMT; Path=/
72
72
  - sl="delete me"; Version=1; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT;
73
73
  Path=/
74
- - visit="v=1&G"; Version=1; Max-Age=63072000; Expires=Thu, 30-Apr-2020 14:17:44
74
+ - visit="v=1&G"; Version=1; Max-Age=63072000; Expires=Wed, 20-May-2020 18:34:12
75
75
  GMT; Path=/
76
76
  X-Li-Proto:
77
77
  - http/1.1
@@ -85,15 +85,15 @@ http_interactions:
85
85
  Connection:
86
86
  - keep-alive
87
87
  X-Li-Pop:
88
- - prod-ech2
88
+ - prod-edc2
89
89
  X-Li-Uuid:
90
- - 4avgDgKLKhVAid+m7SoAAA==
90
+ - JZAgOZy8MBWAld5MTisAAA==
91
91
  body:
92
92
  encoding: ASCII-8BIT
93
93
  string: '{"error_description":"the authorization server is currently unable
94
- to handle the request : RestException{_response=RestResponse[headers={Content-Length=9511,
95
- Content-Type=application/json, X-RestLi-Error-Response=true, X-RestLi-Protocol-Version=2.0.0}cookies=[],status=404,entityLength=9511]}
94
+ to handle the request : RestException{_response=RestResponse[headers={Content-Length=10592,
95
+ Content-Type=application/json, X-RestLi-Error-Response=true, X-RestLi-Protocol-Version=2.0.0}cookies=[],status=404,entityLength=10592]}
96
96
  ","error":"temporarily_unavailable"}'
97
97
  http_version:
98
- recorded_at: Tue, 01 May 2018 14:17:44 GMT
99
- recorded_with: VCR 3.0.3
98
+ recorded_at: Mon, 21 May 2018 18:34:12 GMT
99
+ recorded_with: VCR 4.0.0
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: client_id=dummy_client_id&client_secret=dummy_client_secret&code=dummy_code&grant_type=authorization_code&raise_errors=true&redirect_uri=http%3A%2F%2Flvh.me%3A5000
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.10.1
11
+ - Faraday v0.12.2
12
12
  Content-Type:
13
13
  - application/x-www-form-urlencoded
14
14
  Accept-Encoding:
@@ -31,11 +31,11 @@ http_interactions:
31
31
  Content-Language:
32
32
  - en-US
33
33
  Content-Length:
34
- - '249'
34
+ - '250'
35
35
  Date:
36
- - Tue, 01 May 2018 14:17:44 GMT
36
+ - Mon, 21 May 2018 18:34:12 GMT
37
37
  X-Fs-Uuid:
38
- - 4ea6a43b028b2a1510635f10032b0000
38
+ - 6d8653659cbc30159005132abd2a0000
39
39
  Strict-Transport-Security:
40
40
  - max-age=2592000
41
41
  X-Content-Type-Options:
@@ -55,23 +55,23 @@ http_interactions:
55
55
  - prod-lva1
56
56
  Set-Cookie:
57
57
  - _lipt=deleteMe; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
58
- - bcookie="v=2&cddc5842-8ac1-40be-8051-2e3e98f9c0c8"; domain=.linkedin.com;
59
- Path=/; Expires=Fri, 01-May-2020 01:55:17 GMT
60
- - bscookie="v=1&2018050114174590478047-e07b-4d00-8c27-982afedc45deAQEsbZz-cnu6aaApudE86HNqsbh-VKak";
61
- domain=.www.linkedin.com; Path=/; Secure; Expires=Fri, 01-May-2020 01:55:17
58
+ - bcookie="v=2&194b1ecd-b9fc-450b-8c07-4d9d87477e8a"; domain=.linkedin.com;
59
+ Path=/; Expires=Thu, 21-May-2020 06:11:45 GMT
60
+ - bscookie="v=1&20180521183413f795f5c8-2e10-42c2-8920-87be0a432323AQHoo1a_vqsKuqO5L7wGUimNKySXziY3";
61
+ domain=.www.linkedin.com; Path=/; Secure; Expires=Thu, 21-May-2020 06:11:45
62
62
  GMT; HttpOnly
63
63
  - lang="v=2&lang=en-us"; Version=1; Domain=linkedin.com; Path=/
64
- - leo_auth_token="GST:UYc_4AhwNzUOeZKN5j6EoJHHo3lOXlfQnv_lliH-MQUO2zA0aOt1GP:1525184265:3b2083ec3dafeaa73166b385b5047fed69d4c376";
65
- Version=1; Max-Age=1799; Expires=Tue, 01-May-2018 14:47:44 GMT; Path=/
66
- - lidc="b=VB88:g=1230:u=1:i=1525184265:t=1525270665:s=AQG1hoFytmuJ4bX6yweMD8dsESg_j4id";
67
- Expires=Wed, 02 May 2018 14:17:45 GMT; domain=.linkedin.com; Path=/
64
+ - leo_auth_token="GST:8eDGGaOuhyg9eGhMv7uXIk5tRvg95HyY8YPO25OPWVgje-HYbkZWkW:1526927653:4024b0fcbfe318f0617efa5b3593f5a943a7f3fb";
65
+ Version=1; Max-Age=1799; Expires=Mon, 21-May-2018 19:04:12 GMT; Path=/
66
+ - lidc="b=VB06:g=1762:u=1:i=1526927653:t=1527014053:s=AQFKD5x8ekiW_QXLNA92mRNPixdfT6N3";
67
+ Expires=Tue, 22 May 2018 18:34:13 GMT; domain=.linkedin.com; Path=/
68
68
  - s_leo_auth_token="delete me"; Version=1; Max-Age=0; Expires=Thu, 01-Jan-1970
69
69
  00:00:10 GMT; Path=/
70
70
  - sl="delete me"; Version=1; Domain=.www.linkedin.com; Max-Age=0; Expires=Thu,
71
71
  01-Jan-1970 00:00:10 GMT; Path=/
72
72
  - sl="delete me"; Version=1; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT;
73
73
  Path=/
74
- - visit="v=1&G"; Version=1; Max-Age=63072000; Expires=Thu, 30-Apr-2020 14:17:45
74
+ - visit="v=1&G"; Version=1; Max-Age=63072000; Expires=Wed, 20-May-2020 18:34:13
75
75
  GMT; Path=/
76
76
  X-Li-Proto:
77
77
  - http/1.1
@@ -87,13 +87,13 @@ http_interactions:
87
87
  X-Li-Pop:
88
88
  - prod-edc2
89
89
  X-Li-Uuid:
90
- - BYMxOwKLKhWAF4VFAysAAA==
90
+ - PFuuY5y8MBWg+osFvSoAAA==
91
91
  body:
92
92
  encoding: ASCII-8BIT
93
93
  string: '{"error_description":"the authorization server is currently unable
94
- to handle the request : RestException{_response=RestResponse[headers={Content-Length=9511,
95
- Content-Type=application/json, X-RestLi-Error-Response=true, X-RestLi-Protocol-Version=2.0.0}cookies=[],status=404,entityLength=9511]}
94
+ to handle the request : RestException{_response=RestResponse[headers={Content-Length=10592,
95
+ Content-Type=application/json, X-RestLi-Error-Response=true, X-RestLi-Protocol-Version=2.0.0}cookies=[],status=404,entityLength=10592]}
96
96
  ","error":"temporarily_unavailable"}'
97
97
  http_version:
98
- recorded_at: Tue, 01 May 2018 14:17:45 GMT
99
- recorded_with: VCR 3.0.3
98
+ recorded_at: Mon, 21 May 2018 18:34:13 GMT
99
+ recorded_with: VCR 4.0.0
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Authorization:
13
13
  - Bearer dummy access token
14
14
  User-Agent:
15
- - Faraday v0.10.1
15
+ - Faraday v0.12.2
16
16
  Accept-Encoding:
17
17
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
18
  Accept:
@@ -27,7 +27,7 @@ http_interactions:
27
27
  Content-Type:
28
28
  - application/json
29
29
  Date:
30
- - Tue, 01 May 2018 14:17:30 GMT
30
+ - Mon, 21 May 2018 18:33:58 GMT
31
31
  X-Li-Fabric:
32
32
  - prod-lva1
33
33
  Transfer-Encoding:
@@ -39,13 +39,13 @@ http_interactions:
39
39
  X-Li-Proto:
40
40
  - http/1.1
41
41
  X-Li-Uuid:
42
- - 2OAVov6KKhXAKU2piisAAA==
42
+ - 4gmX75i8MBXwaQZpdSsAAA==
43
43
  Set-Cookie:
44
- - lidc="b=VB17:g=1697:u=1:i=1525184250:t=1525270650:s=AQG1i0-x5NI4UE0yKGSSlmGeQMDgyeoA";
45
- Expires=Wed, 02 May 2018 14:17:30 GMT; domain=.linkedin.com; Path=/
44
+ - lidc="b=VB90:g=1300:u=1:i=1526927638:t=1527014038:s=AQG3FreU8caYTQ4iqgrhldrSZfnYJyGm";
45
+ Expires=Tue, 22 May 2018 18:33:58 GMT; domain=.linkedin.com; Path=/
46
46
  body:
47
47
  encoding: UTF-8
48
48
  string: '{"serviceErrorCode":65600,"message":"Invalid access token","status":401}'
49
49
  http_version:
50
- recorded_at: Tue, 01 May 2018 14:17:30 GMT
51
- recorded_with: VCR 3.0.3
50
+ recorded_at: Mon, 21 May 2018 18:33:58 GMT
51
+ recorded_with: VCR 4.0.0