class Wasabi::Resolver

Wasabi::Resolver

Resolves local and remote WSDL documents.

Constants

URL
XML

Attributes

adapter[R]
document[R]
request[R]

Public Class Methods

new(document, request = nil, adapter = nil) click to toggle source
# File lib/wasabi/resolver.rb, line 23
def initialize(document, request = nil, adapter = nil)
  @document = document
  @request  = request || Faraday.new
  @adapter  = adapter
end

Public Instance Methods

resolve() click to toggle source
# File lib/wasabi/resolver.rb, line 31
def resolve
  raise ArgumentError, "Unable to resolve: #{document.inspect}" unless document

  case document
    when URL then load_from_remote
    when XML then document
    else          load_from_disc
  end
end

Private Instance Methods

load_from_disc() click to toggle source
# File lib/wasabi/resolver.rb, line 62
def load_from_disc
  File.read(document)
end
load_from_remote() click to toggle source
# File lib/wasabi/resolver.rb, line 43
def load_from_remote
  # TODO: remove_after_httpi
  # support HTTPI and Faraday side by side
  # dont reference HTTPI by constant until inside the conditional, in case it isn't loaded
  if request.class.to_s.include?("HTTPI::Request")
    request.url = document
    response = HTTPI.get(request, adapter)

    raise HTTPError.new("Error: #{response.code} for url #{request.url}", response) if response.error?
  else
    request.adapter *adapter if adapter
    response = request.get(document)

    raise HTTPError.new("Error: #{response.status} for url #{document}", response) unless response.success?
  end

  response.body
end