class Rack::Cors::Resources

Attributes

resources[R]

Public Class Methods

new() click to toggle source
# File lib/rack/cors/resources.rb, line 10
def initialize
  @origins = []
  @resources = []
  @public_resources = false
end

Public Instance Methods

allow_origin?(source, env = {}) click to toggle source
# File lib/rack/cors/resources.rb, line 39
def allow_origin?(source, env = {})
  return true if public_resources?

  !!@origins.detect do |origin|
    if origin.is_a?(Proc)
      origin.call(source, env)
    elsif origin.is_a?(Regexp)
      source =~ origin
    else
      source == origin
    end
  end
end
match_resource(path, env) click to toggle source
# File lib/rack/cors/resources.rb, line 53
def match_resource(path, env)
  @resources.detect { |r| r.match?(path, env) }
end
origins(*args, &blk) click to toggle source
# File lib/rack/cors/resources.rb, line 16
def origins(*args, &blk)
  @origins = args.flatten.reject { |s| s == '' }.map do |n|
    case n
    when Proc, Regexp, %r{^[a-z][a-z0-9.+-]*://}
      n
    when '*'
      @public_resources = true
      n
    else
      Regexp.compile("^[a-z][a-z0-9.+-]*:\\\/\\\/#{Regexp.quote(n)}$")
    end
  end.flatten
  @origins.push(blk) if blk
end
public_resources?() click to toggle source
# File lib/rack/cors/resources.rb, line 35
def public_resources?
  @public_resources
end
resource(path, opts = {}) click to toggle source
# File lib/rack/cors/resources.rb, line 31
def resource(path, opts = {})
  @resources << Resource.new(public_resources?, path, opts)
end
resource_for_path(path) click to toggle source
# File lib/rack/cors/resources.rb, line 57
def resource_for_path(path)
  @resources.detect { |r| r.matches_path?(path) }
end