Class: SiteHub::Builder

Inherits:
Object
  • Object
show all
Extended by:
GetterSetterMethods
Includes:
Middleware
Defined in:
lib/sitehub/builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from GetterSetterMethods

getter_setter, getter_setters

Methods included from Middleware

#apply_middleware, #middleware?, #middlewares, #use

Constructor Details

#initialize(&block) ⇒ Builder

Returns a new instance of Builder.



24
25
26
27
# File 'lib/sitehub/builder.rb', line 24

def initialize(&block)
  @reverse_proxies = {}
  instance_eval(&block) if block
end

Instance Attribute Details

#forward_proxiesObject (readonly)

Returns the value of attribute forward_proxies.



11
12
13
# File 'lib/sitehub/builder.rb', line 11

def forward_proxies
  @forward_proxies
end

#reverse_proxiesObject (readonly)

Returns the value of attribute reverse_proxies.



11
12
13
# File 'lib/sitehub/builder.rb', line 11

def reverse_proxies
  @reverse_proxies
end

#sitehubObject (readonly)

Returns the value of attribute sitehub.



11
12
13
# File 'lib/sitehub/builder.rb', line 11

def sitehub
  @sitehub
end

Instance Method Details

#add_default_middlewareObject



40
41
42
43
44
45
46
47
48
# File 'lib/sitehub/builder.rb', line 40

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

#buildObject



33
34
35
36
37
38
# File 'lib/sitehub/builder.rb', line 33

def build
  forward_proxies.init
  add_default_middleware
  middlewares.reverse!
  apply_middleware(forward_proxies)
end

#force_ssl(except: []) ⇒ Object



19
20
21
22
# File 'lib/sitehub/builder.rb', line 19

def force_ssl(except: [])
  @force_ssl = true
  @ssl_exclusions = except
end

#proxy(opts = {}, &block) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/sitehub/builder.rb', line 50

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

#reverse_proxy(hash) ⇒ Object



58
59
60
# File 'lib/sitehub/builder.rb', line 58

def reverse_proxy(hash)
  reverse_proxies.merge!(hash)
end