class Audiosearch::Client
Attributes
agent[RW]
api_endpoint[RW]
croak_on_404[RW]
debug[RW]
host[RW]
user_agent[RW]
Public Class Methods
new(args)
click to toggle source
# File lib/audiosearch.rb, line 52 def initialize(args) #puts args.inspect @un = args[:username] @pw = args[:password] @oauth_id = args[:id] @oauth_secret = args[:secret] @oauth_redir_uri = args[:redir_uri] || 'urn:ietf:wg:oauth:2.0:oob' @host = args[:host] || 'https://www.audiosear.ch' @debug = args[:debug] @user_agent = args[:user_agent] || 'audiosearch-ruby-client/'+version() @api_endpoint = args[:api_endpoint] || '/api' @croak_on_404 = args[:croak_on_404] || false # normalize host @host.gsub!(/\/$/, '') # sanity check begin uri = URI.parse(@host) rescue URI::InvalidURIError => err raise "Bad :host value " + err end if (!uri.host || !uri.port) raise "Bad :host value " + @server end @agent = get_agent() end
Public Instance Methods
get(path, params={})
click to toggle source
# File lib/audiosearch.rb, line 139 def get(path, params={}) url = path.match(/^https?:/) ? path : @api_endpoint + path resp = @agent.get url, params @debug and pp(resp) return Audiosearch::Response.new resp end
get_agent()
click to toggle source
# File lib/audiosearch.rb, line 109 def get_agent() uri = @host + @api_endpoint opts = { :url => uri, :ssl => {:verify => false}, :headers => { 'User-Agent' => @user_agent, 'Accept' => 'application/json', 'Cookie' => @cookies } } @token = get_oauth_token #puts "token=" #puts pp(@token) conn = Faraday.new(opts) do |faraday| faraday.request :url_encoded [:mashify, :json].each{|mw| faraday.response(mw) } if !@croak_on_404 faraday.use Audiosearch::FaradayErrHandler else faraday.response(:raise_error) end faraday.request :authorization, 'Bearer', @token.token faraday.response :logger if @debug faraday.adapter :excon # IMPORTANT this is last end return conn end
get_episode(ep_id)
click to toggle source
# File lib/audiosearch.rb, line 151 def get_episode(ep_id) resp = get('/episodes/'+ep_id.to_s) return resp.http_resp.body end
get_oauth_token(options={})
click to toggle source
# File lib/audiosearch.rb, line 82 def get_oauth_token(options={}) oauth_options = { site: @host + @api_endpoint, authorize_url: @host + '/oauth/authorize', token_url: @host + '/oauth/token', redirect_uri: @oauth_redir_uri, connection_opts: options.merge( { :ssl => {:verify => false}, } ) } # TODO client = OAuth2::Client.new(@oauth_id, @oauth_secret, oauth_options) do |faraday| faraday.request :url_encoded faraday.response :logger if @debug faraday.adapter :excon end token = nil if @un && @pw # TODO 3-legged oauth to @authorize_url else token = client.client_credentials.get_token() end return token end
get_person(p_id)
click to toggle source
# File lib/audiosearch.rb, line 173 def get_person(p_id) resp = get('/people/'+p_id.to_s) return resp.http_resp.body end
get_show(id)
click to toggle source
# File lib/audiosearch.rb, line 146 def get_show(id) resp = get('/shows/'+id.to_s) return resp.http_resp.body end
get_tastemakers(params={})
click to toggle source
# File lib/audiosearch.rb, line 166 def get_tastemakers(params={}) type = params.has_key?(:type) ? params[:type] : 'episodes' n = params.has_key?(:n) ? params[:n] : 10 resp = get("/tastemakers/#{type}/#{n}") return resp.http_resp.body end
get_trending()
click to toggle source
# File lib/audiosearch.rb, line 161 def get_trending resp = get('/trending/') return resp.http_resp.body end
search(params, type='episodes')
click to toggle source
# File lib/audiosearch.rb, line 156 def search(params, type='episodes') path = '/search/'+type get(path, params) end
version()
click to toggle source
# File lib/audiosearch.rb, line 48 def version return "1.0.1" end