Sha256: 917e0bbbacee514b28b20d20176c0619627091526dadc4322307477e8059f6b8

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

require 'faraday'
require 'faraday_middleware'
require 'digest/sha1'
require 'nokogiri'

module SlideshareApi
  class Client
    SLIDESHARE_API_URL = 'https://www.slideshare.net/api/2'

    attr_accessor :connection, :api_key, :shared_secret

    def initialize(api_key, shared_secret)
      @api_key = api_key
      @shared_secret = shared_secret
      build_connection
    end

    def slideshow(options = {})
      params = {}
      params.merge!({slideshow_url: options[:slideshow_url]}) if options[:slideshow_url]
      params.merge!({slideshow_id: options[:slideshow_id]}) if options[:slideshow_id]
      params.merge!({detailed: 1}) if options[:detailed]
      SlideshareApi::Model::Slideshow.new Nokogiri::XML(@connection.get('get_slideshow', api_validation_params.merge(params)).body)
    end

    private

    def build_connection
      @connection = Faraday.new(url: SLIDESHARE_API_URL) do |faraday|
        faraday.request :json
        faraday.adapter Faraday.default_adapter
      end
    end

    def api_validation_params
      timestamp = Time.now.to_i
      hash = Digest::SHA1.hexdigest "#{@shared_secret}#{timestamp}"
      {api_key: @api_key, ts: timestamp, hash: hash}
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
slideshare_api-0.0.4 lib/slideshare_api/client.rb
slideshare_api-0.0.3 lib/slideshare_api/client.rb
slideshare_api-0.0.2 lib/slideshare_api/client.rb