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.
- checksums.yaml +5 -5
 - data/README.md +4 -4
 - data/lib/linked_in/api.rb +14 -8
 - data/lib/linked_in/api_resource.rb +1 -1
 - data/lib/linked_in/media.rb +47 -0
 - data/lib/linked_in/organizations.rb +9 -0
 - data/lib/linked_in/raise_error.rb +1 -2
 - data/lib/linked_in/share_and_social_stream.rb +34 -4
 - data/lib/linked_in/version.rb +1 -1
 - data/linkedin-v2.gemspec +2 -1
 - data/spec/linked_in/api/media_spec.rb +19 -0
 - data/spec/vcr_cassettes/access_token_success.yml +19 -19
 - data/spec/vcr_cassettes/bad_code.yml +18 -18
 - data/spec/vcr_cassettes/organization_data.yml +7 -7
 - data/spec/vcr_cassettes/people_picture_urls.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_connections_fields.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_connections_other.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_connections_self.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_fields_complex.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_fields_simple.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_lang_spanish.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_multiple_fields.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_multiple_uids.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_multiple_uids_and_urls.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_multiple_urls.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_new_connections_fields.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_new_connections_other.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_new_connections_self.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_other_uid.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_other_url.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_own.yml +8 -8
 - data/spec/vcr_cassettes/people_profile_own_secure.yml +7 -7
 - data/spec/vcr_cassettes/people_profile_skills.yml +7 -7
 - data/spec/vcr_cassettes/unavailable.yml +19 -19
 - metadata +24 -10
 - data/pkg/linkedin-oauth2-2.0.0.gem +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 42b4c574ad2d2ee7cc50f9a32e6c6f4a629af4b6e142e80381c63741d82e442a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1e88833b29d4cc2fc1a3abf5d683b7c0eb162dfeb4d920769791e358573f53b1
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 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  
     | 
| 
       7 
     | 
    
         
            -
            those endpoints are using this gem in a production application, 
     | 
| 
       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
         
     | 
    
        data/lib/linked_in/api.rb
    CHANGED
    
    | 
         @@ -8,8 +8,11 @@ module LinkedIn 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  verify_access_token!(access_token)
         
     | 
| 
       9 
9 
     | 
    
         
             
                  @access_token = access_token
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                  @connection = 
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
                                                           
     | 
| 
       60 
     | 
    
         
            -
                                                           
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 75 
     | 
    
         
            +
                  response = @connection.run_request(:delete, prepend_prefix(path), body, headers, &block)
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                  Mash.from_json(response.body)
         
     | 
| 
       78 
78 
     | 
    
         
             
                end
         
     | 
    
        data/lib/linked_in/media.rb
    CHANGED
    
    | 
         @@ -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
         
     | 
    
        data/lib/linked_in/version.rb
    CHANGED
    
    
    
        data/linkedin-v2.gemspec
    CHANGED
    
    | 
         @@ -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 
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
    
         
            -
                  - ' 
     | 
| 
      
 34 
     | 
    
         
            +
                  - '250'
         
     | 
| 
       35 
35 
     | 
    
         
             
                  Date:
         
     | 
| 
       36 
     | 
    
         
            -
                  -  
     | 
| 
      
 36 
     | 
    
         
            +
                  - Mon, 21 May 2018 18:34:12 GMT
         
     | 
| 
       37 
37 
     | 
    
         
             
                  X-Fs-Uuid:
         
     | 
| 
       38 
     | 
    
         
            -
                  -  
     | 
| 
      
 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& 
     | 
| 
       59 
     | 
    
         
            -
                    Path=/; Expires= 
     | 
| 
       60 
     | 
    
         
            -
                  - bscookie="v=1& 
     | 
| 
       61 
     | 
    
         
            -
                    domain=.www.linkedin.com; Path=/; Secure; Expires= 
     | 
| 
      
 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: 
     | 
| 
       65 
     | 
    
         
            -
                    Version=1; Max-Age=1799; Expires= 
     | 
| 
       66 
     | 
    
         
            -
                  - lidc="b= 
     | 
| 
       67 
     | 
    
         
            -
                    Expires= 
     | 
| 
      
 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= 
     | 
| 
      
 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- 
     | 
| 
      
 88 
     | 
    
         
            +
                  - prod-edc2
         
     | 
| 
       89 
89 
     | 
    
         
             
                  X-Li-Uuid:
         
     | 
| 
       90 
     | 
    
         
            -
                  -  
     | 
| 
      
 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= 
     | 
| 
       95 
     | 
    
         
            -
                    Content-Type=application/json, X-RestLi-Error-Response=true, X-RestLi-Protocol-Version=2.0.0}cookies=[],status=404,entityLength= 
     | 
| 
      
 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:  
     | 
| 
       99 
     | 
    
         
            -
            recorded_with: VCR  
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
    
         
            -
                  - ' 
     | 
| 
      
 34 
     | 
    
         
            +
                  - '250'
         
     | 
| 
       35 
35 
     | 
    
         
             
                  Date:
         
     | 
| 
       36 
     | 
    
         
            -
                  -  
     | 
| 
      
 36 
     | 
    
         
            +
                  - Mon, 21 May 2018 18:34:12 GMT
         
     | 
| 
       37 
37 
     | 
    
         
             
                  X-Fs-Uuid:
         
     | 
| 
       38 
     | 
    
         
            -
                  -  
     | 
| 
      
 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& 
     | 
| 
       59 
     | 
    
         
            -
                    Path=/; Expires= 
     | 
| 
       60 
     | 
    
         
            -
                  - bscookie="v=1& 
     | 
| 
       61 
     | 
    
         
            -
                    domain=.www.linkedin.com; Path=/; Secure; Expires= 
     | 
| 
      
 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: 
     | 
| 
       65 
     | 
    
         
            -
                    Version=1; Max-Age=1799; Expires= 
     | 
| 
       66 
     | 
    
         
            -
                  - lidc="b= 
     | 
| 
       67 
     | 
    
         
            -
                    Expires= 
     | 
| 
      
 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= 
     | 
| 
      
 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 
     | 
    
         
            -
                  -  
     | 
| 
      
 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= 
     | 
| 
       95 
     | 
    
         
            -
                    Content-Type=application/json, X-RestLi-Error-Response=true, X-RestLi-Protocol-Version=2.0.0}cookies=[],status=404,entityLength= 
     | 
| 
      
 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:  
     | 
| 
       99 
     | 
    
         
            -
            recorded_with: VCR  
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
    
         
            -
                  -  
     | 
| 
      
 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 
     | 
    
         
            -
                  -  
     | 
| 
      
 42 
     | 
    
         
            +
                  - 4gmX75i8MBXwaQZpdSsAAA==
         
     | 
| 
       43 
43 
     | 
    
         
             
                  Set-Cookie:
         
     | 
| 
       44 
     | 
    
         
            -
                  - lidc="b= 
     | 
| 
       45 
     | 
    
         
            -
                    Expires= 
     | 
| 
      
 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:  
     | 
| 
       51 
     | 
    
         
            -
            recorded_with: VCR  
     | 
| 
      
 50 
     | 
    
         
            +
              recorded_at: Mon, 21 May 2018 18:33:58 GMT
         
     | 
| 
      
 51 
     | 
    
         
            +
            recorded_with: VCR 4.0.0
         
     |