Sha256: 529ada10db512426e5ae6bd7baa6f1f4fc6c7c347a95157fcb490e115ee3f499
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 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: cleaned_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] xml_response = Nokogiri::XML(@connection.get('get_slideshow', api_validation_params.merge(params)).body) check_error xml_response SlideshareApi::Model::Slideshow.new xml_response end private def cleaned_url(url) url.split('?')[0] end def check_error(xml_response) error = xml_response.search('SlideShareServiceError') raise SlideshareApi::Error, xml_response.search('Message').text unless error.empty? end 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
slideshare_api-0.0.6 | lib/slideshare_api/client.rb |