Sha256: 8e652c14251d154a09800f9fee1ed5267ec265f44239340a5c3f900057318bec
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
require 'rack' require 'font_assets/mime_types' module FontAssets class Middleware def initialize(app, origin) @app = app @origin = origin @mime_types = FontAssets::MimeTypes.new(Rack::Mime::MIME_TYPES) end def access_control_headers { "Access-Control-Allow-Origin" => @origin, "Access-Control-Allow-Methods" => "GET", "Access-Control-Allow-Headers" => "x-requested-with", "Access-Control-Max-Age" => "3628800" } end def call(env) # intercept the "preflight" request if env["REQUEST_METHOD"] == "OPTIONS" return [200, access_control_headers, []] else code, headers, body = @app.call(env) set_headers! headers, body, env["PATH_INFO"] [code, headers, body] end end private def extension(path) "." + path.split("?").first.split(".").last end def font_asset?(path) @mime_types.font? extension(path) end def set_headers!(headers, body, path) if ext = extension(path) and font_asset?(ext) headers.merge!(access_control_headers) headers.merge!('Content-Type' => mime_type(ext)) unless body.empty? end end def mime_type(extension) @mime_types[extension] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
font_assets-0.1.0 | lib/font_assets/middleware.rb |