Sha256: 8f84c76e3a641e42c839d8ebf830d1657ef8c08e5d4b62318194b425b75b1fe1

Contents?: true

Size: 1.14 KB

Versions: 14

Compression:

Stored size: 1.14 KB

Contents

require 'active_support'

class LHS::Record

  module RequestCycleCache
    extend ActiveSupport::Concern

    REQUEST_CYCLE_CACHE_WARNING = "[WARNING] Can't enable LHS::RequestCycleCache as LHC::Caching interceptor is not enabled/configured (see https://github.com/local-ch/lhc/blob/master/docs/interceptors/caching.md#caching-interceptor)!".freeze

    class Interceptor < LHC::Interceptor

      VERSION = 1
      CACHED_METHODS = [:get].freeze

      def before_request(request)
        request.options = request.options.merge({
          cache: true,
          cache_expires_in: 5.minutes,
          cache_race_condition_ttl: 5.seconds,
          cache_key: cache_key_for(request),
          cached_methods: CACHED_METHODS
        }.merge(request.options))
      end

      private

      def cache_key_for(request)
        [
          "LHS_REQUEST_CYCLE_CACHE(v#{VERSION})",
          request.method.upcase,
          [request.url, request.params.presence].compact.join('?'),
          "REQUEST=#{LHS::Record::RequestCycleCache::RequestCycleThreadRegistry.request_id}",
          "HEADERS=#{request.headers.hash}"
        ].join(' ')
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
lhs-12.0.1 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-12.0.0 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.3.3 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.3.2 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.3.1 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.3.0 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.2.2 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.2.1 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.2.0 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.1.0 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.0.3 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.0.2 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.0.1 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb
lhs-11.0.0 lib/lhs/concerns/record/request_cycle_cache/interceptor.rb