lib/riak/client/excon_backend.rb in riak-client-0.9.0.beta vs lib/riak/client/excon_backend.rb in riak-client-0.9.0.beta2
- old
+ new
@@ -10,65 +10,61 @@
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require 'riak'
+require 'riak/client/pump'
module Riak
class Client
# An HTTP backend for Riak::Client that uses Wesley Beary's Excon
- # HTTP library. Comforms to the Riak::Client::HTTPBackend
+ # HTTP library. Conforms to the Riak::Client::HTTPBackend
# interface.
class ExconBackend < HTTPBackend
def self.configured?
begin
- begin
- require 'fiber'
- rescue LoadError
- require 'riak/util/fiber1.8'
- end
require 'excon'
- Excon::VERSION >= "0.3.4"
+ 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?
- passed_block = block
- Fiber.new {
- f = Fiber.current
- block = lambda {|chunk| f.resume(chunk) }
- loop do
- passed_block.call Fiber.yield
- end
- }.resume
- end
+
+ block = Pump.new(block) if block_given?
+
response = connection.request(params, &block)
if valid_response?(expect, response.status)
response_headers.initialize_http_header(response.headers)
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 FailedRequest.new(method, expect, response.status, response.headers, response.body)
+ raise HTTPFailedRequest.new(method, expect, response.status, response.headers, 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