class EmmyExtends::HTTPI::Adapter

Attributes

client[R]

Public Class Methods

new(request) click to toggle source
# File lib/emmy_extends/httpi/adapter.rb, line 7
def initialize(request)
  @request = request
end

Public Instance Methods

build_request_url(url) click to toggle source
# File lib/emmy_extends/httpi/adapter.rb, line 57
def build_request_url(url)
  "%s://%s:%s%s" % [url.scheme, url.host, url.port, url.path]
end
proxy_options() click to toggle source
# File lib/emmy_extends/httpi/adapter.rb, line 18
def proxy_options
  {
    :host          => @request.proxy.host,
    :port          => @request.proxy.port,
    :authorization => [@request.proxy.user, @request.proxy.password]
  }
end
request(type) click to toggle source
# File lib/emmy_extends/httpi/adapter.rb, line 26
def request(type)
  if @request.on_body
    raise NotSupportedError, "EM-HTTP-Request does not support response streaming"
  end

  if @request.ssl?
    ssl = {
      cert_chain_file: @request.auth.ssl.ca_cert_file,
      verify_peer: @request.auth.ssl.verify_mode,
      ssl_version: @request.auth.ssl.ssl_version
    }
  end

  @http_request = EmmyHttp::Request.new(
    url: build_request_url(@request.url),
    type: type,
    timeouts: { connect: @request.open_timeout, inactivity: @request.read_timeout },
    headers: @request.headers.to_hash,
    body: @request.body,
    ssl: ssl
  )

  # FIXME: proxy support # proxy_options if @request.proxy
  #setup_proxy(options) if @request.proxy
  setup_http_auth if @request.auth.http?

  @http_operation = EmmyHttp::Operation.new(@http_request, EmmyExtends::EmHttpRequest::Adapter.new)
  @operation = HTTPI::Operation.new(@http_operation)
  @operation
end
setup_http_auth() click to toggle source
# File lib/emmy_extends/httpi/adapter.rb, line 11
def setup_http_auth
  unless @request.auth.type == :basic
    raise NotSupportedError, "EM-HTTP-Request does only support HTTP basic auth"
  end
  @http_request.headers[:authorization] = @request.auth.credentials
end