class Mailpeek::Web

Public: Base Web Class

Constants

ASSETS
LAYOUT
ROOT
VIEWS

Attributes

app_url[RW]
views[W]

Public Class Methods

call(env) click to toggle source
# File lib/mailpeek/web.rb, line 77
def self.call(env)
  @app ||= new
  @app.call(env)
end
disable(*opts) click to toggle source
# File lib/mailpeek/web.rb, line 45
def disable(*opts)
  opts.each { |key| set(key, false) }
end
enable(*opts) click to toggle source
# File lib/mailpeek/web.rb, line 41
def enable(*opts)
  opts.each { |key| set(key, true) }
end
inherited(child) click to toggle source
# File lib/mailpeek/web.rb, line 57
def self.inherited(child)
  child.app_url = app_url
end
middlewares() click to toggle source
# File lib/mailpeek/web.rb, line 29
def middlewares
  @middlewares ||= []
end
register(extension) click to toggle source
# File lib/mailpeek/web.rb, line 98
def self.register(extension)
  extension.registered(WebApplication)
end
set(attribute, value) click to toggle source
# File lib/mailpeek/web.rb, line 49
def set(attribute, value)
  send(:"#{attribute}=", value)
end
settings() click to toggle source
# File lib/mailpeek/web.rb, line 25
def settings
  self
end
use(*middleware_args, &block) click to toggle source
# File lib/mailpeek/web.rb, line 33
def use(*middleware_args, &block)
  middlewares << [middleware_args, block]
end
views() click to toggle source
# File lib/mailpeek/web.rb, line 37
def views
  @views ||= VIEWS
end

Public Instance Methods

app() click to toggle source
# File lib/mailpeek/web.rb, line 82
def app
  @app ||= build
end
call(env) click to toggle source
# File lib/mailpeek/web.rb, line 73
def call(env)
  app.call(env)
end
disable(*opts) click to toggle source
# File lib/mailpeek/web.rb, line 90
def disable(*opts)
  opts.each { |key| set(key, false) }
end
enable(*opts) click to toggle source
# File lib/mailpeek/web.rb, line 86
def enable(*opts)
  opts.each { |key| set(key, true) }
end
middlewares() click to toggle source
# File lib/mailpeek/web.rb, line 69
def middlewares
  @middlewares ||= Web.middlewares.dup
end
set(attribute, value) click to toggle source
# File lib/mailpeek/web.rb, line 94
def set(attribute, value)
  send(:"#{attribute}=", value)
end
settings() click to toggle source
# File lib/mailpeek/web.rb, line 61
def settings
  self.class.settings
end
use(*middleware_args, &block) click to toggle source
# File lib/mailpeek/web.rb, line 65
def use(*middleware_args, &block)
  middlewares << [middleware_args, block]
end

Private Instance Methods

build() click to toggle source
# File lib/mailpeek/web.rb, line 110
def build
  middlewares = self.middlewares
  klass = self.class

  ::Rack::Builder.new do
    %w[stylesheets javascripts images].each do |asset_dir|
      map "/#{asset_dir}" do
        run ::Rack::File.new(
          "#{ASSETS}/#{asset_dir}",
          'Cache-Control' => 'public, max-age=86400'
        )
      end
    end

    middlewares.each { |middleware, block| use(*middleware, &block) }

    run WebApplication.new(klass)
  end
end
using?(middleware) click to toggle source
# File lib/mailpeek/web.rb, line 104
def using?(middleware)
  middlewares.any? do |(m, _)|
    m.is_a?(Array) && (m[0] == middleware || m[0].is_a?(middleware))
  end
end