class SiteHub::ForwardProxyBuilder
Constants
- IGNORING_URL_LABEL_MSG
- INVALID_ROUTE_DEF_MSG
- INVALID_SPLIT_MSG
- ROUTES_WITH_SPLITS_MSG
Attributes
id[R]
mapped_path[R]
Public Class Methods
new(url: nil, mapped_path:, rule: nil, sitehub_cookie_name: nil, &block)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 30 def initialize(url: nil, mapped_path:, rule: nil, sitehub_cookie_name: nil, &block) @id = UUID.generate(:compact) @mapped_path = mapped_path @splits = Collection::SplitRouteCollection.new @routes = Collection::RouteCollection.new @sitehub_cookie_name = sitehub_cookie_name rule(rule) if rule default(url: url) if url return unless block_given? instance_eval(&block) raise InvalidDefinitionException unless valid? end
Public Instance Methods
build()
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 86 def build if middleware? build_with_middleware build_default_with_middleware if default_proxy end self end
default(url:)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 82 def default(url:) default_proxy(forward_proxy(label: :default, url: url)) end
endpoints(collection = nil)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 50 def endpoints(collection = nil) return @endpoints || Collection::RouteCollection.new unless collection raise InvalidDefinitionException, ROUTES_WITH_SPLITS_MSG if @endpoints && @endpoints != collection @endpoints = collection end
forward_proxy(label:, url:, rule: nil)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 100 def forward_proxy(label:, url:, rule: nil) label ||= UUID.generate(:compact) ForwardProxy.new(sitehub_cookie_path: sitehub_cookie_path, sitehub_cookie_name: sitehub_cookie_name, id: label.to_sym, rule: rule, mapped_url: url, mapped_path: mapped_path) end
resolve(id: nil, env:)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 95 def resolve(id: nil, env:) id = id.to_s.to_sym endpoints[id] || endpoints.resolve(env: env) || default_proxy end
route(url: nil, label: nil, rule: nil, &block)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 70 def route(url: nil, label: nil, rule: nil, &block) endpoint = if block raise InvalidDefinitionException, INVALID_ROUTE_DEF_MSG unless rule warn(IGNORING_URL_LABEL_MSG) if url || label new(rule: rule, &block).build else forward_proxy(url: url, label: label, rule: rule) end routes.add(endpoint.id, endpoint) end
split(percentage:, url: nil, label: nil, &block)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 57 def split(percentage:, url: nil, label: nil, &block) raise InvalidDefinitionException, INVALID_SPLIT_MSG unless block || url proxy = if block warn(IGNORING_URL_LABEL_MSG) if url || label new(&block).build else forward_proxy(label: label, url: url) end splits.add proxy.id, proxy, percentage end
valid?()
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 45 def valid? return true if default_proxy endpoints.valid? end
Private Instance Methods
build_default_with_middleware()
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 129 def build_default_with_middleware default_proxy(apply_middleware(default_proxy)) end
build_with_middleware()
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 120 def build_with_middleware endpoints.transform do |proxy| apply_middleware(proxy).tap do |wrapped_proxy| wrapped_proxy.extend(Rules, Resolver) wrapped_proxy.rule(proxy.rule) end end end
new(rule: nil, &block)
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 133 def new(rule: nil, &block) self.class.new(mapped_path: mapped_path, rule: rule, &block) end
routes()
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 112 def routes endpoints(@routes) end
splits()
click to toggle source
# File lib/sitehub/forward_proxy_builder.rb, line 116 def splits endpoints(@splits) end