class NewEden::Connection
Constants
- CACHE_TIMEOUT
- REQUEST_TIMEOUT
Attributes
game_server[R]
hydra[R]
key_id[R]
server[R]
test_server[R]
vcode[R]
Public Class Methods
new(key_id, vcode, use_test = false)
click to toggle source
# File lib/neweden/connection.rb, line 18 def initialize(key_id, vcode, use_test = false) @key_id = key_id @vcode = vcode @game_server = "api.eveonline.com".freeze @test_server = "apitest.eveonline.com".freeze @server = use_test ? @test_server : @game_server @hydra = Typhoeus::Hydra.new end
Public Instance Methods
handle_response(response)
click to toggle source
# File lib/neweden/connection.rb, line 50 def handle_response(response) if response.timed_out? raise TimeoutError, "Response timed out." elsif response.code == 0 raise NoResponseError, "No response received." elsif response.code == 404 raise NotFoundError, "API endpoint not found." elsif !response.success? raise UnsuccessfulResponseError, "Received HTTP response: #{response.code.to_s}" end xml = Nokogiri::XML.parse(response.body) unless (xml/:eveapi/:error).empty? error_code = (xml/:error).attribute('code').value.to_i case error_code when 203 raise AuthenticationError, "Invalid key id or vcode." when 124, 125 raise NotInvolvedInFactionalWarfare, "Not involved in factional warfare." else raise ApiError, (xml/:eveapi/:error).children.map { |e| e.to_s.gsub(/\.$/, '') }.join(", ") end end xml end
raw_request(endpoint, method = :post, params = {})
click to toggle source
# File lib/neweden/connection.rb, line 36 def raw_request(endpoint, method = :post, params = {}) url = "https://#{@server}/#{sanitize_endpoint(endpoint)}" case method when :get Typhoeus::Request.get(url, request_params(params)) when :put Typhoeus::Request.put(url, request_params(params)) when :delete Typhoeus::Request.delete(url, request_params(params)) else Typhoeus::Request.post(url, request_params(params)) end end
request(endpoint, method = :post, params = {})
click to toggle source
# File lib/neweden/connection.rb, line 27 def request(endpoint, method = :post, params = {}) xml = handle_response(raw_request(endpoint, method, params)) if xml Hash.from_xml((xml/:eveapi/:result).to_s)[:result] # rescue raise XMLParsingError, "No result in set" else raise XMLParsingError, "No XML parsed successfully" end end
request_params(params = {})
click to toggle source
# File lib/neweden/connection.rb, line 90 def request_params(params = {}) if @key_id.nil? || @vcode.nil? { :headers => { :Accept => "application/xml" }, :timeout => REQUEST_TIMEOUT } else { :headers => { :Accept => "application/xml" }, :timeout => REQUEST_TIMEOUT, :params => params.merge({ :keyID => @key_id, :vCode => @vcode }) } end end
request_url()
click to toggle source
# File lib/neweden/connection.rb, line 86 def request_url "https://#{@server}/#{sanitize_endpoint(endpoint)}" end
use_game_server()
click to toggle source
# File lib/neweden/connection.rb, line 78 def use_game_server @server = @game_server end
use_test_server()
click to toggle source
# File lib/neweden/connection.rb, line 82 def use_test_server @server = @test_server end
Private Instance Methods
sanitize_endpoint(endpoint)
click to toggle source
# File lib/neweden/connection.rb, line 107 def sanitize_endpoint(endpoint) endpoint.strip.gsub(/^\/+/, '') end