class JokerDMAPI::Client
Constants
- DEFAULT_URI
Public Class Methods
connection(username, password, uri = DEFAULT_URI) { |connection| ... }
click to toggle source
# File lib/joker-dmapi/client.rb, line 24 def self.connection(username, password, uri = DEFAULT_URI, &block) connection = self.new(username, password, uri) if block_given? yield connection connection.logout else connection end end
new(username, password, uri = DEFAULT_URI)
click to toggle source
# File lib/joker-dmapi/client.rb, line 20 def initialize(username, password, uri = DEFAULT_URI) @username, @password, @uri = username, password, uri end
Public Instance Methods
logout()
click to toggle source
# File lib/joker-dmapi/client.rb, line 34 def logout unless @auth_sid.nil? query :logout @auth_sid = nil end end
query(request, params = {})
click to toggle source
# File lib/joker-dmapi/client.rb, line 41 def query(request, params = {}) response = query_no_raise request, params return response if response[:headers][:status_code] == '0' return response if request == :logout && response[:headers][:status_code] == '1000' raise_response response end
tlds()
click to toggle source
# File lib/joker-dmapi/client.rb, line 48 def tlds auth_sid unless @auth_sid @tlds end
Private Instance Methods
auth_sid()
click to toggle source
# File lib/joker-dmapi/client.rb, line 94 def auth_sid if @auth_sid.nil? response = request(:login, username: @username, password: @password) raise "Authentication error" unless response[:headers].has_key? :auth_sid @auth_sid = response[:headers][:auth_sid] @tlds = response[:body].split "\n" end @auth_sid end
parse_attributes(attributes)
click to toggle source
# File lib/joker-dmapi/client.rb, line 69 def parse_attributes(attributes) attributes.split("\n").inject({}) do |h, line| attribute = parse_line line h.merge!(attribute) if attribute.is_a? Hash h end end
parse_line(line)
click to toggle source
# File lib/joker-dmapi/client.rb, line 60 def parse_line(line) parts = line.split /\s*:\s*/, 2 if parts.length == 2 { parts[0].downcase.gsub('-', '_').gsub('.', '_').to_sym => parts[1] } else line end end
parse_response(response)
click to toggle source
# File lib/joker-dmapi/client.rb, line 77 def parse_response(response) response.each_line { |line| puts "<< #{line}" } if ENV['JOKER_DMAPI_DEBUG'] parts = response.split "\n\n", 2 { headers: parse_attributes(parts[0]), body: parts[1] } end
query_no_raise(request, params = {})
click to toggle source
# File lib/joker-dmapi/client.rb, line 55 def query_no_raise(request, params = {}) params['auth-sid'] = auth_sid request(request, params.inject({}) { |r, (key, value)| r[key.to_s.gsub('_', '-')] = value; r }) end
raise_response(response)
click to toggle source
# File lib/joker-dmapi/client.rb, line 104 def raise_response(response) raise "\n\n" + response[:headers].inject([]) { |s, (key, value)| s << "#{key}: #{value}"}.join("\n") + "\n\n" + response[:body] + "\n\n" end
request(request, params = {})
click to toggle source
# File lib/joker-dmapi/client.rb, line 83 def request(request, params = {}) request = request.to_s.gsub('_', '-') uri = Addressable::URI.parse(@uri + request) uri.query_values = params http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE puts ">> #{uri}" if ENV['JOKER_DMAPI_DEBUG'] parse_response http.request(Net::HTTP::Get.new(uri.request_uri)).body end