class Rack::Corsair
Constants
- VERSION
Public Class Methods
new(app, &block)
click to toggle source
# File lib/corsair.rb, line 3 def initialize(app, &block) @app = app @origin = "*" @resources = [] block.call(self) if block_given? end
Public Instance Methods
allow_origin(origin)
click to toggle source
# File lib/corsair.rb, line 21 def allow_origin(origin) @origin = origin end
allow_resource(resource)
click to toggle source
# File lib/corsair.rb, line 25 def allow_resource(resource) @resources << resource.to_s end
call(env)
click to toggle source
# File lib/corsair.rb, line 10 def call(env) req = Rack::Request.new(env) status, headers, response = @app.call(env) if resource_allowed?(req) [status, headers.merge(cors_headers), response] else [status, headers, response] end end
Private Instance Methods
cors_headers()
click to toggle source
# File lib/corsair.rb, line 37 def cors_headers { "Access-Control-Allow-Origin" => @origin } end
resource_allowed?(req)
click to toggle source
# File lib/corsair.rb, line 31 def resource_allowed?(req) return true if @resources.empty? resource = req.env["PATH_INFO"].split("/")[1] @resources.include?(resource) end