30 lines
714 B
Ruby
30 lines
714 B
Ruby
module Travis
|
|
module Web
|
|
class Allow
|
|
attr_accessor :app, :allow, :response
|
|
|
|
def initialize(app, options = {})
|
|
@app = app
|
|
@allow = options[:allow] || ['GET', 'HEAD']
|
|
@response = options.fetch(:response) do
|
|
body = 'request method not allowed'
|
|
headers = {
|
|
'Content-Type' => 'text/plain',
|
|
'Allow' => allow.join(', '),
|
|
'Content-Length' => body.bytesize.to_s
|
|
}
|
|
[405, headers, [body]]
|
|
end
|
|
end
|
|
|
|
def call(env)
|
|
allow?(env) ? app.call(env) : response
|
|
end
|
|
|
|
def allow?(env)
|
|
allow.include? env['REQUEST_METHOD']
|
|
end
|
|
end
|
|
end
|
|
end
|