Sha256: fcc944c8b10ef565b9bcbe8735b375faa56b68330168e74962828f3f44736862

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

module LolSoap
  # Represents a HTTP request containing a SOAP Envelope
  class Request
    attr_reader :envelope

    def initialize(envelope)
      @envelope = envelope
    end

    # @see Envelope#body
    def body(&block)
      envelope.body(&block)
    end

    # @see Envelope#header
    def header(&block)
      envelope.header(&block)
    end

    # Namespace used for SOAP envelope tags
    def soap_namespace
      envelope.soap_namespace
    end

    # URL to be POSTed to
    def url
      envelope.endpoint
    end

    # The type of the element sent in the request body
    def input_type
      envelope.input_type
    end

    # The type of the element that will be received in the response body
    def output_type
      envelope.output_type
    end

    # The MIME type of the request. This is always application/soap+xml,
    # but it could be overridden in a subclass.
    def mime
      'application/soap+xml'
    end

    # The charset of the request. This is always UTF-8, but it could be
    # overridden in a subclass.
    def charset
      'UTF-8'
    end

    # The full content type of the request, assembled from the #mime and
    # #charset.
    def content_type
     "#{mime};charset=#{charset}"
    end

    # Headers that must be set when making the request
    def headers
      {
        'Content-Type'   => content_type,
        'Content-Length' => content.bytesize.to_s,
        'SOAPAction'     => envelope.action
      }
    end

    # The content to be sent in the HTTP request
    def content
      @content ||= envelope.to_xml
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lolsoap-0.1.4 lib/lolsoap/request.rb
lolsoap-0.1.3 lib/lolsoap/request.rb