locomotivecms/steam

View on GitHub
lib/locomotive/steam/middlewares/concerns/liquid_context.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Locomotive::Steam
  module Middlewares
    module Concerns
      module LiquidContext

        private

        def liquid_context
          ::Liquid::Context.new(liquid_assigns, {}, liquid_registers, true)
        end

        def liquid_registers
          {
            request:        request,
            locale:         locale,
            site:           site,
            page:           page,
            services:       services,
            repositories:   services.repositories,
            logger:         Locomotive::Common::Logger,
            live_editing:   live_editing?,
            params:         params,
            session:        request.session,
            cookies:        request.cookies,
            file_system:    Locomotive::Steam::Liquid::FileSystem.new(
              section_finder: services.section_finder,
              snippet_finder: services.snippet_finder
            )
          }.merge(env['steam.liquid_registers'])
        end

        def liquid_assigns
          _default_liquid_assigns.merge(
            _locale_liquid_assigns.merge(
              _request_liquid_assigns.merge(
                _http_actions_liquid_assigns.merge(
                  _steam_liquid_assigns))))
        end

        def _default_liquid_assigns
          {
            'current_page'      => params[:page],
            'params'            => Locomotive::Steam::Liquid::Drops::Params.new(params),
            'now'               => Time.zone.now,
            'today'             => Date.today,
            'mode'              => Locomotive::Steam.configuration.mode,
            'wagon'             => Locomotive::Steam.configuration.mode == :test,
            'live_editing'      => live_editing?
          }
        end

        def _steam_liquid_assigns
          {
            'site'          => site.to_liquid,
            'page'          => page.to_liquid,
            'models'        => Locomotive::Steam::Liquid::Drops::ContentTypes.new,
            'contents'      => Locomotive::Steam::Liquid::Drops::ContentTypes.new,
            'session'       => Locomotive::Steam::Liquid::Drops::SessionProxy.new,
          }.merge(env['steam.liquid_assigns'])
        end

        def _locale_liquid_assigns
          {
            'locale'         => locale.to_s,
            'default_locale' => site.default_locale.to_s,
            'locales'        => site.locales.map(&:to_s)
          }
        end

        def _request_liquid_assigns
          {
            'base_url'    => request.base_url,
            'fullpath'    => request.fullpath,
            'http_method' => request.request_method,
            'ip_address'  => request.ip,
            'mounted_on'  => mounted_on,
            'path'        => request.path,
            'referer'     => request.referer,
            'url'         => request.url,
            'user_agent'  => request.user_agent,
            'host'        => request.host_with_port
          }
        end

        def _http_actions_liquid_assigns
          {
            'head?'   => request.head?,
            'get?'    => request.get?,
            'post?'   => request.post?,
            'put?'    => request.put?,
            'delete?' => request.delete?
          }
        end

      end
    end
  end
end