Module: LlmCostTracker::Dashboard::Masking

Defined in:
app/services/llm_cost_tracker/dashboard/masking.rb

Constant Summary collapse

SENSITIVE_KEYS =
%w[provider_api_key_id provider_workspace_id provider_project_id].freeze
MASK_TAIL_LENGTH =
4

Class Method Summary collapse

Class Method Details

.mask_hash(hash) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/services/llm_cost_tracker/dashboard/masking.rb', line 17

def self.mask_hash(hash)
  return hash unless hash.is_a?(Hash)

  hash.each_with_object({}) do |(key, value), masked|
    masked[key] = case value
                  when Hash then mask_hash(value)
                  when Array then value.map { |entry| entry.is_a?(Hash) ? mask_hash(entry) : entry }
                  else
                    mask_value(key, value)
                  end
  end
end

.mask_value(key, value) ⇒ Object



9
10
11
12
13
14
15
# File 'app/services/llm_cost_tracker/dashboard/masking.rb', line 9

def self.mask_value(key, value)
  string = value.to_s
  return string unless SENSITIVE_KEYS.include?(key.to_s)
  return string if string.length <= MASK_TAIL_LENGTH

  "***#{string[-MASK_TAIL_LENGTH, MASK_TAIL_LENGTH]}"
end