Sha256: 1129ac3a7561d0c73ec36f6bfb6f65b2dbfc9defa247f7b89f7ca7f2d5f95f2e
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
require "cors/config/version" require 'rack/cors' require 'yaml' require 'byebug' module Cors class Config class Error < StandardError; end attr_accessor :app, :user_config def initialize(app, user_config = 'config/cors.yml') @app = app @user_config = user_config end 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 Error.new("Unexpected error #{error.message}") end private 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 def configure_cors return [] unless File.exist?(@user_config) YAML.load_file(@user_config) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cors-config-0.2.3 | lib/cors/config.rb |