module Shaf::Parser
Constants
- INPUT_BODY
Public Class Methods
for(request)
click to toggle source
# File lib/shaf/parser.rb, line 24 def for(request) clazz = parser_for(request) return unless clazz body = input(request) clazz.new(request: request, body: body) end
input?(request)
click to toggle source
# File lib/shaf/parser.rb, line 20 def input?(request) !!input(request) end
register(parser)
click to toggle source
# File lib/shaf/parser.rb, line 12 def register(parser) parsers << parser end
unregister(parser)
click to toggle source
# File lib/shaf/parser.rb, line 16 def unregister(parser) parsers.delete(parser) end
Private Class Methods
input(request)
click to toggle source
# File lib/shaf/parser.rb, line 44 def input(request) body = request.get_header(INPUT_BODY) body ||= read_input(request).tap do |b| request.set_header(INPUT_BODY, b) end body unless String(body).strip.empty? end
parser_for(request)
click to toggle source
# File lib/shaf/parser.rb, line 34 def parser_for(request) parsers.find do |parser| parser.can_handle? request end end
parsers()
click to toggle source
# File lib/shaf/parser.rb, line 40 def parsers @parsers ||= Set.new end
read_input(request)
click to toggle source
# File lib/shaf/parser.rb, line 53 def read_input(request) request.body.rewind request.body.read ensure request.body.rewind end