Class: Chronos::Core::CacheNormalizer

Inherits:
Object
  • Object
show all
Defined in:
lib/chronos/core/cache_normalizer.rb

Overview

Produces bounded cache metadata without exposing raw cache keys or values.

Examples:

CacheNormalizer.new("project", :none).call(name, payload)

Instance Method Summary collapse

Constructor Details

#initialize(project_id, key_mode) ⇒ CacheNormalizer

Returns a new instance of CacheNormalizer.



18
19
20
21
# File 'lib/chronos/core/cache_normalizer.rb', line 18

def initialize(project_id, key_mode)
  @project_id = project_id.to_s
  @key_mode = key_mode
end

Instance Method Details

#call(name, payload = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/chronos/core/cache_normalizer.rb', line 23

def call(name, payload = {})
  hit = hit_value(name, payload)
  result = {
    "operation" => bounded(name.to_s.split(".").first, 64),
    "backend" => backend(payload),
    "namespace" => bounded(namespace(payload).to_s, 128),
    "hit" => hit,
    "outcome" => outcome(hit)
  }
  result["key_hash"] = key_hash(value(payload, :key)) if @key_mode == :sha256
  result.delete_if { |key, child| child.to_s.empty? && key != "hit" }
rescue StandardError
  {"operation" => "cache", "outcome" => "unknown"}
end