Sha256: 2b6cb940f266701c525d00226748ddabb95b92060a65a15f6575ca36ec4ab446
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
require 'sitehub/collection_methods' require 'sitehub/candidate_routes' require 'forwardable' class SiteHub class InvalidProxyDefinitionException < StandardError end class ConfigError < StandardError end class Core class << self # TODO: default action for missing key, throw exception? def from_hash(config) new do extend CollectionMethods sitehub_cookie_name config[:sitehub_cookie_name] if config[:sitehub_cookie_name] collection!(config, :proxies).each do |proxy| mappings.add_route route_builder: CandidateRoutes.from_hash(proxy, sitehub_cookie_name) end collection(config, :reverse_proxies).each do |proxy| reverse_proxy proxy[:downstream_url] => proxy[:path] end end end end include Equality extend Forwardable attr_reader :mappings, :reverse_proxies def_delegator :mappings, :sitehub_cookie_name def initialize(&block) @reverse_proxies = {} @mappings = Middleware::CandidateRouteMappings.new instance_eval(&block) if block end def build Middleware::ReverseProxy.new(mappings.init, reverse_proxies) end def proxy(opts = {}, &block) mapped_path, url = *(opts.respond_to?(:to_a) ? opts.to_a : [opts]).flatten mappings.add_route(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.5.0.alpha10 | lib/sitehub/core.rb |
sitehub-0.5.0.alpha8 | lib/sitehub/core.rb |