class Cors::Config

Constants

VERSION

Attributes

app[RW]
user_config[RW]

Public Class Methods

new(app, user_config = 'config/cors.yml') click to toggle source
# File lib/cors/config.rb, line 10
def initialize(app, user_config = 'config/cors.yml')
  @app = app
  @user_config = user_config
end

Public Instance Methods

call(env) click to toggle source
# File lib/cors/config.rb, line 15
def call(env)
  config = configure_cors
  return @app.call(env) if config.empty?
  cors = generate_cors_rules_from_config(config)
  return @app.call(env) if cors.nil? 
  cors.call(env)
rescue => error
  raise Error.new("Unexpected error #{error.message}")
end

Private Instance Methods

configure_cors() click to toggle source
# File lib/cors/config.rb, line 37
def configure_cors
  return {} unless File.exist?(@user_config)
  contents = YAML.load_file(@user_config)
  return {} if contents == false
  contents
end
generate_cors_rules_from_config(config) click to toggle source
# File lib/cors/config.rb, line 26
def generate_cors_rules_from_config(config)
  cors = Rack::Cors.new(@app, {}) do
    config['cors'].each { |rule|
      allow do
        origins rule[1]['origins']
        resource rule[1]['resource'], :headers => rule[1]['headers'].to_sym, :methods => rule[1]['headers'].to_sym
      end
    }
  end
end