class Rackful::Parser::DOM

Parent class of all XML-parsing parsers. @abstract @since 0.2.0

Attributes

document[R]

@return [Nokogiri::XML::Document]

request[R]

Public Class Methods

new(request) click to toggle source

@raise [HTTP400BadRequest] if the document is malformed.

# File lib/rackful/parser.rb, line 76
def initialize request
  @request = request
  # TODO Is ISO-8859-1 indeed the default encoding for XML documents? If so,
  # that fact must be documented and referenced.
  encoding = self.request.media_type_params['charset'] || 'ISO-8859-1'
  begin
    @document = Nokogiri.XML(
      self.request.env['rack.input'].read,
      self.request.canonical_uri.to_s,
      encoding
    ) do |config|
      config.strict.nonet
    end
  rescue
    raise HTTP400BadRequest, $!.to_s
  end
  raise( HTTP400BadRequest, $!.to_s ) unless @document.root
end
parse(request, response, resource) click to toggle source
# File lib/rackful/parser.rb, line 67
def self.parse request, response, resource
  self.new(request).parse( response, resource )
end