Sha256: cae0bbd1f54493420fd7eebee03de3e050454c32ef5a79d018fa845a8b971c5f

Contents?: true

Size: 1.45 KB

Versions: 11

Compression:

Stored size: 1.45 KB

Contents

module RailsConnector
  class CmsEnv
    OBJ_ENV_KEY = "INFOPARK_OBJ".freeze

    def initialize(env)
      @env = env
    end

    def load
      return if env[OBJ_ENV_KEY]

      load_object
    end

    protected

    attr_reader :env

    def load_object
      env[OBJ_ENV_KEY] =
        begin
          find_obj
        rescue StandardError => e
          e
        end
    end

    def find_obj
      found_obj =
        if params[:id]
          Obj.find(params[:id])
        elsif params[:permalink].present?
          self.class.find_permalink_by_param(params[:permalink])
        else
          if callback = RailsConnector::Configuration.choose_homepage_callback
            callback_result = callback.call(env)
            if callback_result.is_a?(Obj)
              callback_result
            else
              raise "choose_homepage callback did not return an Obj. "\
                "Instead saw #{callback_result.class}."
            end
          else
            Obj.homepage
          end
        end

      if found_obj.suppressed?
        raise RailsConnector::ResourceNotFound,
              "Tried to access Obj #{found_obj.inspect}, but it is suppressed (suppress_export is set)!"
      end

      found_obj
    end

    def params
      env["action_dispatch.request.path_parameters"]
    end

    def self.find_permalink_by_param(permalink_param)
      permalink = Array(permalink_param).join("/")
      Obj.find_by_permalink!(permalink)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
infopark_fiona_connector-7.0.1.6.1.6.rc4 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.6.1.6.rc3 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.6.1.6.rc2 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.6.1.6.rc1 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.7.rc1 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.4.rc2 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.4.rc1 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.3.rc8 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.3.rc7 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.3.rc6 lib/rails_connector/cms_env.rb
infopark_fiona_connector-7.0.1.5.2.3.rc5 lib/rails_connector/cms_env.rb