Sha256: d80a2bda99fb4f14d7fafcf7adbe7cbf5b6532e85f594d4a986133eb1e366694

Contents?: true

Size: 1.77 KB

Versions: 5

Compression:

Stored size: 1.77 KB

Contents

require 'haml'
require 'mimetype_fu'
require 'mime-types'
require 'mime/types'

require 'rack/rewrite'
require 'rack/csrf'
require 'rack/session/moneta'
require 'rack/builder'
require 'rack/lint'
require 'dragonfly/middleware'

require_relative 'middlewares'

module Locomotive::Steam
  module Server

    class << self

      def default_middlewares
        server, configuration = self, self.configuration

        -> (stack) {
          use(Rack::Rewrite) { r301 %r{^/(.*)/$}, '/$1' }
          use Middlewares::Favicon

          if configuration.serve_assets
            use ::Rack::Static, {
              root: configuration.asset_path,
              urls: ['/images', '/fonts', '/samples', '/media', '/sites']
            }
            use Middlewares::DynamicAssets, {
              root:   configuration.asset_path,
              minify: configuration.minify_assets
            }
          end

          use Rack::Lint
          use Rack::Session::Moneta, configuration.moneta

          server.steam_middleware_stack.each { |k| use k }
        }
      end

      def steam_middleware_stack
        [
          Middlewares::DefaultEnv,
          Middlewares::Site,
          Middlewares::Logging,
          Middlewares::Robots,
          Middlewares::Timezone,
          Middlewares::Sitemap,
          Middlewares::EntrySubmission,
          Middlewares::Locale,
          Middlewares::LocaleRedirection,
          Middlewares::Path,
          Middlewares::Page,
          Middlewares::TemplatizedPage
        ]
      end

      def to_app
        stack = configuration.middleware

        Rack::Builder.new do
          stack.inject(self)

          run Middlewares::Renderer.new(nil)
        end
      end

      def configuration
        Locomotive::Steam.configuration
      end

    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
locomotivecms_steam-1.0.0.pre.beta.2 lib/locomotive/steam/server.rb
locomotivecms_steam-1.0.0.pre.beta.1 lib/locomotive/steam/server.rb
locomotivecms_steam-1.0.0.pre.alpha.3 lib/locomotive/steam/server.rb
locomotivecms_steam-1.0.0.pre.alpha.2 lib/locomotive/steam/server.rb
locomotivecms_steam-1.0.0.pre.alpha.1 lib/locomotive/steam/server.rb