# File lib/rack/cors.rb, line 276 def initialize @origins = [] @resources = [] @public_resources = false end
# File lib/rack/cors.rb, line 304 def allow_origin?(source,env = {}) return true if public_resources? return !! @origins.detect do |origin| if origin.is_a?(Proc) origin.call(source,env) else origin === source end end end
# File lib/rack/cors.rb, line 316 def match_resource(path, env) @resources.detect { |r| r.match?(path, env) } end
# File lib/rack/cors.rb, line 282 def origins(*args, &blk) @origins = args.flatten.reject{ |s| s == '' }.map do |n| case n when Proc, Regexp, /^https?:\/\//, 'file://' then n when '*' then @public_resources = true; n else Regexp.compile("^[a-z][a-z0-9.+-]*:\\\/\\\/#{Regexp.quote(n)}$") end end.flatten @origins.push(blk) if blk end
# File lib/rack/cors.rb, line 300 def public_resources? @public_resources end
# File lib/rack/cors.rb, line 296 def resource(path, opts={}) @resources << Resource.new(public_resources?, path, opts) end
# File lib/rack/cors.rb, line 320 def resource_for_path(path) @resources.detect { |r| r.matches_path?(path) } end