Sha256: 9b6935f15df22088dad962981e494e2e092644c018a3297803ed27275a3028ee

Contents?: true

Size: 1.01 KB

Versions: 49

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

require 'active_support'

module LHS
  module Interceptors
    module RequestCycleCache
      extend ActiveSupport::Concern

      class Interceptor < LHC::Interceptor

        VERSION = 1
        CACHED_METHODS = [:get].freeze

        def before_request
          request.options = {
            cache: {
              expires_in: 5.minutes,
              race_condition_ttl: 5.seconds,
              key: cache_key_for(request),
              methods: CACHED_METHODS,
              use: LHS.config.request_cycle_cache
            }
          }.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::Interceptors::RequestCycleCache::ThreadRegistry.request_id}",
            "HEADERS=#{request.headers.hash}"
          ].join(' ')
        end
      end
    end
  end
end

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
lhs-26.2.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-26.1.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-26.0.1 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-26.0.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.2.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.1.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.0.4 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.0.3 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.0.2 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.0.1 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-25.0.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-24.1.2 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-24.1.1 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-24.1.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-24.1.0.pre.2 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-24.1.0.pre.1 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-24.0.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-23.0.2 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-23.0.1 lib/lhs/interceptors/request_cycle_cache/interceptor.rb
lhs-23.0.0 lib/lhs/interceptors/request_cycle_cache/interceptor.rb