Sha256: aad6521d4c793cddf02a9e2081e79edc41dc00e43869bc03ad6ce3ab9e55b4a4
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
require 'sitehub/getter_setter_methods' require 'sitehub/forward_proxy_builder' require 'sitehub/middleware' require 'logger' class SiteHub class InvalidProxyDefinitionException < Exception end class Builder attr_reader :sitehub, :forward_proxies, :reverse_proxies include Middleware extend GetterSetterMethods getter_setters :access_logger, :error_logger getter_setter :sitehub_cookie_name, RECORDED_ROUTES_COOKIE def force_ssl(except: []) @force_ssl = true @ssl_exclusions = except end def initialize(&block) @reverse_proxies = {} instance_eval(&block) if block end def forward_proxies @forward_proxies ||= ForwardProxies.new(sitehub_cookie_name) end def build forward_proxies.init add_default_middleware middlewares.reverse! apply_middleware(forward_proxies) end def add_default_middleware use Middleware::ReverseProxy, reverse_proxies use Middleware::TransactionId use Middleware::ErrorHandling use Middleware::Logging::AccessLogger, access_logger || ::Logger.new(STDOUT) use Middleware::Logging::ErrorLogger, error_logger || ::Logger.new(STDERR) use Rack::FiberPool use Rack::SslEnforcer, except: @ssl_exclusions if @force_ssl end def proxy(opts = {}, &block) mapped_path, url = *(opts.respond_to?(:to_a) ? opts.to_a : [opts]).flatten forward_proxies.add_proxy(url: url, mapped_path: mapped_path, &block) end def reverse_proxy(hash) reverse_proxies.merge!(hash) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sitehub-0.4.10 | lib/sitehub/builder.rb |
sitehub-0.4.9 | lib/sitehub/builder.rb |