Add `ProjectHoneypot::Rack` class to DRY
parent
707b115428
commit
415f7c9d24
|
@ -1,6 +1,7 @@
|
|||
require 'net/dns'
|
||||
require "project_honeypot/url"
|
||||
require "project_honeypot/base"
|
||||
require "project_honeypot/rack"
|
||||
require "project_honeypot/rack/header"
|
||||
require "project_honeypot/rack/forbidden"
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
module ProjectHoneypot
|
||||
class Rack
|
||||
def initialize(app, options={})
|
||||
@app = app
|
||||
|
||||
raise ArgumentError, 'Must specify an API key' unless options[:api_key]
|
||||
ProjectHoneypot.api_key = options[:api_key]
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,20 +1,15 @@
|
|||
module ProjectHoneypot::Rack
|
||||
class Forbidden
|
||||
def initialize(app, options={})
|
||||
@app = app
|
||||
module ProjectHoneypot
|
||||
class Rack
|
||||
class Forbidden < Rack
|
||||
def call(env)
|
||||
request = ::Rack::Request.new(env)
|
||||
url = ProjectHoneypot.lookup(request.ip)
|
||||
|
||||
raise ArgumentError, 'Must specify an API key' unless options[:api_key]
|
||||
ProjectHoneypot.api_key = options[:api_key]
|
||||
end
|
||||
|
||||
def call(env)
|
||||
request = ::Rack::Request.new(env)
|
||||
url = ProjectHoneypot.lookup(request.ip)
|
||||
|
||||
if url.safe?
|
||||
@app.call(request.env)
|
||||
else
|
||||
[403, {"Content-Type" => "text/html"}, ["Forbidden"]]
|
||||
if url.safe?
|
||||
@app.call(request.env)
|
||||
else
|
||||
[403, {"Content-Type" => "text/html"}, ["Forbidden"]]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,19 +1,14 @@
|
|||
module ProjectHoneypot::Rack
|
||||
class Header
|
||||
def initialize(app, options={})
|
||||
@app = app
|
||||
module ProjectHoneypot
|
||||
class Rack
|
||||
class Header < Rack
|
||||
def call(env)
|
||||
request = ::Rack::Request.new(env)
|
||||
url = ProjectHoneypot.lookup(request.ip)
|
||||
|
||||
raise ArgumentError, 'Must specify an API key' unless options[:api_key]
|
||||
ProjectHoneypot.api_key = options[:api_key]
|
||||
end
|
||||
env['PROJECT_HONEYPOT_SAFE'] = url.safe?
|
||||
|
||||
def call(env)
|
||||
request = ::Rack::Request.new(env)
|
||||
url = ProjectHoneypot.lookup(request.ip)
|
||||
|
||||
env['PROJECT_HONEYPOT_SAFE'] = url.safe?
|
||||
|
||||
@app.call(request.env)
|
||||
@app.call(request.env)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue