class LinkedIn::Media

Rich Media APIs

@see developer.linkedin.com/docs/guide/v2/shares/rich-media-shares

[(contribute here)](github.com/mdesjardins/linkedin-v2)

Public Instance Methods

summary(options = {}) click to toggle source
# File lib/linked_in/media.rb, line 12
def summary(options = {})
  path = "/richMediaSummariesV2/#{options.delete(:id)}"
  get(path, options)
end
upload(options = {}) click to toggle source

Uploads rich media content to LinkedIn from a supplied URL.

@see developer.linkedin.com/docs/guide/v2/shares/rich-media-shares#upload

@options options [String] :source_url, the URL to the content to be uploaded. @options options [Numeric] :timeout, optional timeout value in seconds, defaults to 300. @options options [String] :disposition_filename, the name of the file to be uploaded. Defaults to the basename of the URL filename. @return [LinkedIn::Mash]

# File lib/linked_in/media.rb, line 26
def upload(options = {})
  source_url = options.delete(:source_url)
  timeout = options.delete(:timeout) || DEFAULT_TIMEOUT_SECONDS
  media_upload_endpoint = LinkedIn.config.api + '/media/upload'
  response =
    @connection.post(media_upload_endpoint, file: file(source_url, options)) do |req|
      req.headers['Accept'] = 'application/json'
      req.options.timeout = timeout
      req.options.open_timeout = timeout
    end
  Mash.from_json(response.body)
end

Private Instance Methods

content_type(media) click to toggle source
# File lib/linked_in/media.rb, line 49
def content_type(media)
  ::MIME::Types.type_for(extension(media)).first.content_type
end
extension(media) click to toggle source
# File lib/linked_in/media.rb, line 45
def extension(media)
  upload_filename(media).split('.').last
end
file(source_url, options) click to toggle source
# File lib/linked_in/media.rb, line 53
def file(source_url, options)
  media = open(source_url, 'rb')
  io = StringIO.new(media.read)
  filename = options.delete(:disposition_filename) || upload_filename(media)
  Faraday::UploadIO.new(io, content_type(media), filename)
end
upload_filename(media) click to toggle source
# File lib/linked_in/media.rb, line 41
def upload_filename(media)
  File.basename(media.base_uri.request_uri)
end