Class: Rackful::Parser::DOM Abstract

Inherits:
Rackful::Parser show all
Defined in:
lib/rackful/parser.rb

Overview

This class is abstract.

Parent class of all XML-parsing parsers.

Since:

Direct Known Subclasses

XHTML

Constant Summary

MEDIA_TYPES =

The media types parsed by this parser.

See Also:

Since:

  • 0.2.0

[
  'text/xml',
  'application/xml'
]

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (DOM) initialize(request, resource)

Returns a new instance of DOM

Raises:

Since:

  • 0.2.0



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/rackful/parser.rb', line 73

def initialize request, resource
  super request, resource
  # 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

Instance Attribute Details

- (Nokogiri::XML::Document) document (readonly)

Returns:

  • (Nokogiri::XML::Document)

Since:

  • 0.2.0



67
68
69
# File 'lib/rackful/parser.rb', line 67

def document
  @document
end

- (Request) request (readonly) Originally defined in class Rackful::Parser

Returns:

- (Resource) resource (readonly) Originally defined in class Rackful::Parser

Returns: