Sha256: 9c0a5bd106cca6f10e7097005dfd8056ccad33ac9994c4158dbe7852409dd5de
Contents?: true
Size: 1.37 KB
Versions: 5
Compression:
Stored size: 1.37 KB
Contents
class Roda module RodaPlugins # The head plugin attempts to automatically handle HEAD requests, # by treating them as GET requests and returning an empty body # without modifying the response status or response headers. # # So for the following routes, # # route do |r| # r.root do # 'root' # end # # r.get 'a' do # 'a' # end # # r.is 'b', :method=>[:get, :post] do # 'b' # end # end # # HEAD requests for +/+, +/a+, and +/b+ will all return 200 status # with an empty body. module Head EMPTY_ARRAY = [].freeze module InstanceMethods # Always use an empty response body for head requests, with a # content length of 0. def call(*) res = super if @_request.head? res[2] = EMPTY_ARRAY end res end end module RequestMethods # Consider HEAD requests as GET requests. def is_get? super || head? end private # If the current request is a HEAD request, match if one of # the given methods is a GET request. def match_method(method) super || (!method.is_a?(Array) && head? && method.to_s.upcase == 'GET') end end end register_plugin(:head, Head) end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
roda-2.2.0 | lib/roda/plugins/head.rb |
roda-2.1.0 | lib/roda/plugins/head.rb |
roda-2.0.0 | lib/roda/plugins/head.rb |
roda-1.3.0 | lib/roda/plugins/head.rb |
roda-1.2.0 | lib/roda/plugins/head.rb |