linkedin-v2 0.1.3 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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