class CUI8Tracks::API
Constants
- API_KEY
Public Class Methods
new(username, password)
click to toggle source
# File lib/cui8tracks/api.rb, line 6 def initialize(username, password) @username = username @password = password @logged_in = false end
Public Instance Methods
get(path, param = { })
click to toggle source
# File lib/cui8tracks/api.rb, line 53 def get(path, param = { }) http_request(Net::HTTP::Get, path, param) end
http_request(klass, path, param = { })
click to toggle source
# File lib/cui8tracks/api.rb, line 23 def http_request(klass, path, param = { }) path += '.json' unless path =~ /\.json$/ logger.debug "#{klass.to_s.split(/::/).last} #{path} #{param.inspect}" param[:api_key] = API_KEY port = param.delete(:https) ? 443 : 80 # XXX param_str = to_param_str(param) req = klass == Net::HTTP::Post ? klass.new(path) : klass.new(path + '?' + param_str) req.basic_auth(@username, @password) if @logged_in proxy_host, proxy_port = (ENV["http_proxy"] || ENV["HTTP_PROXY"] || '').sub(/http:\/\//, '').split(':') connection = Net::HTTP::Proxy(proxy_host, proxy_port).new('8tracks.com', port) connection.use_ssl = true if port == 443 res = connection.start do |http| if req.kind_of? Net::HTTP::Post http.request(req, param_str) else http.request(req) end end json_data = JSON.parse(res.body) logger.debug json_data.inspect case res.code when '200' json_data else # XXX pp res raise 'api' end end
login()
click to toggle source
# File lib/cui8tracks/api.rb, line 12 def login return if @logged_in res = post('/sessions', :login => @username, :password => @password, :https => true) @logged_in = true if res['logged_in'] end
post(path, param = { })
click to toggle source
# File lib/cui8tracks/api.rb, line 57 def post(path, param = { }) http_request(Net::HTTP::Post, path, param) end
to_param_str(hash = { })
click to toggle source
# File lib/cui8tracks/api.rb, line 18 def to_param_str(hash = { }) raise ArgumentError, 'Argument must be a Hash object' unless hash.is_a?(Hash) hash.to_a.map{|i| i[0].to_s + '=' + CGI.escape(i[1].to_s) }.join('&') end