Sha256: e8a3d339566518dbbdbae17242bf5b2a7ea7b3c806c6da8688a416b1208a4982
Contents?: true
Size: 1.25 KB
Versions: 22
Compression:
Stored size: 1.25 KB
Contents
require 'uri' module Endeca class RequestError < ::StandardError; end class Request def self.perform(path, query=nil) new(path, query).perform end def initialize(path, query=nil) @path = path.strip @query = query end def perform handle_response(get_response) end def uri return @uri if @uri @uri = URI.parse(@path) @uri.query = query_string @uri end private def get_response #:nodoc: http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) Endeca.logger.debug "ENDECA REQUEST: uri=#{uri}" if Endeca.debug http.request(request) end # Raises exception Net::XXX (http error code) if an http error occured def handle_response(response) #:nodoc: case response when Net::HTTPSuccess JSON.parse(response.body) else response.error! # raises exception corresponding to http error Net::XXX end rescue => e raise RequestError, e.message end def query_string query_string_parts = [@uri.query, @query.to_params] query_string_parts.reject!{ |s| s.nil? || s.empty? } query_string_parts.empty? ? nil : query_string_parts.join('&') end end end
Version data entries
22 entries across 22 versions & 1 rubygems