class Handsoap::Http::Drivers::LibuvDriver

Public Class Methods

load!() click to toggle source
# File lib/handsoap/http/drivers/libuv_driver.rb, line 10
def self.load!
    require 'uv-rays'
end

Public Instance Methods

send_http_request_async(request) click to toggle source
# File lib/handsoap/http/drivers/libuv_driver.rb, line 14
def send_http_request_async(request)
    endp = ::UV::HttpEndpoint.new(request.url)

    if request.username && request.password
        request.headers['Authorization'] = [request.username, request.password]
    end

    req = endp.request(request.http_method, {
        headers: request.headers,
        body: request.body
    })

    deferred = ::Handsoap::Deferred.new
    req.then do |resp|
        # Downcase headers and convert values to arrays
        headers = Hash[resp.map { |k, v| [k.to_s.downcase, Array(v)] }]
        http_response = parse_http_part(headers, resp.body, resp.status)
        deferred.trigger_callback http_response
    end
    req.catch do |err|
        deferred.trigger_errback err
    end
    deferred
end