Sha256: bb907040328b31ba992fefdcd1aeeb22febb0b99267bbd782216bbe3733bdb72

Contents?: true

Size: 856 Bytes

Versions: 4

Compression:

Stored size: 856 Bytes

Contents

require "httpi"

module Wasabi

  # = Wasabi::Resolver
  #
  # Resolves local and remote WSDL documents.
  class Resolver

    class HTTPError < StandardError; end

    def initialize(document, request = nil)
      @document = document
      @request = request
    end

    def xml
      raise ArgumentError, "Wasabi is missing a document to resolve" unless @document

      case @document
        when /^http[s]?:/ then from_remote
        when /^</         then @document
        else                   from_fs
      end
    end

    private

    def from_remote
      response = HTTPI.get(request)
      raise HTTPError.new(response) if response.error?
      response.body
    end

    def request
      @request ||= HTTPI::Request.new
      @request.url = @document
      @request
    end

    def from_fs
      File.read(@document)
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
wasabi-2.5.1 lib/wasabi/resolver.rb
wasabi-2.5.0 lib/wasabi/resolver.rb
wasabi-2.4.1 lib/wasabi/resolver.rb
wasabi-2.4.0 lib/wasabi/resolver.rb