Sha256: 473c91b01bb0a54644e1b424a13f5b3a5584e725b8083063c9b0eb20ced1755a
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
require 'riak/failed_request' require 'riak/client/http_backend' require 'riak/client/http_backend/request_headers' require 'riak/client/pump' module Riak class Client # An HTTP backend for Riak::Client that uses Wesley Beary's Excon # HTTP library. Conforms to the Riak::Client::HTTPBackend # interface. class ExconBackend < HTTPBackend def self.configured? begin require 'excon' Excon::VERSION >= "0.5.7" rescue LoadError false end end private def perform(method, uri, headers, expect, data=nil, &block) configure_ssl if @client.ssl_enabled? params = { :method => method.to_s.upcase, :headers => RequestHeaders.new(headers).to_hash, :path => uri.path } params[:query] = uri.query if uri.query params[:body] = data if [:put,:post].include?(method) params[:idempotent] = (method != :post) if block_given? pump = Pump.new(block) # Later versions of Excon pass multiple arguments to the block block = lambda {|*args| pump.pump(args.first) } end response = connection.request(params, &block) response_headers.initialize_http_header(response.headers) if valid_response?(expect, response.status) result = {:headers => response_headers.to_hash, :code => response.status} if return_body?(method, response.status, block_given?) result[:body] = response.body end result else raise HTTPFailedRequest.new(method, expect, response.status, response_headers.to_hash, response.body) end end def connection @connection ||= Excon::Connection.new(root_uri.to_s) end def configure_ssl Excon.ssl_verify_peer = @client.ssl_options[:verify_mode].to_s === "peer" Excon.ssl_ca_path = @client.ssl_options[:ca_path] if @client.ssl_options[:ca_path] end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
seomoz-riak-client-1.0.0.pre | lib/riak/client/excon_backend.rb |
riak-client-1.0.0.beta | lib/riak/client/excon_backend.rb |