Sha256: 9400f10575b82620cd4475aca808ddeafc3167b156573a67bc89407270c6e4f7
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
require 'sitehub/constants' require 'sitehub/nil_proxy' require 'rack/request' require 'rack/response' require 'rack/utils' require 'em-http' class SiteHub module Middleware class ForwardProxies NIL_PROXY = NilProxy.new def call(env) source_request = Rack::Request.new(env) forward_proxy = mapped_proxy(path: source_request.path, request: source_request) forward_proxy.call(env) end def init forward_proxies.values.each(&:build) self end def <<(route) forward_proxies[route.mapped_path] = route end def mapped_proxy(path:, request:) forward_proxies[mapping(path)].resolve(id: request.cookies[RECORDED_ROUTES_COOKIE], env: request.env) end def mapping(path) forward_proxies.keys.find do |key| case key when Regexp key.match(path) else path == key end end end def forward_proxies @forward_proxies ||= begin {}.tap do |hash| hash.default = NIL_PROXY end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
sitehub-0.4.8 | lib/sitehub/middleware/forward_proxies.rb |
sitehub-0.4.7 | lib/sitehub/middleware/forward_proxies.rb |
sitehub-0.4.6 | lib/sitehub/middleware/forward_proxies.rb |