Module: LogBrew::SupportTicketDraft

Defined in:
lib/logbrew/support_ticket.rb

Overview

Local-only support-ticket payload drafts for explicit user or agent handoff.

Constant Summary collapse

SOURCES =
%w[cli sdk website docs mobile].freeze
CATEGORIES =
%w[
  sdk_install_failure
  ingest_failure
  auth_failure
  project_setup
  dashboard_issue
  docs_confusion
  cli_issue
  mobile_issue
  billing_question
  other
].freeze
SENSITIVE_KEY_MARKERS =
%w[
  apikey
  auth
  authorization
  authtoken
  bearer
  clientsecret
  connectionstring
  cookie
  credential
  dsn
  email
  errormessage
  exceptionmessage
  password
  passwd
  privatekey
  refreshtoken
  secret
  session
  setcookie
  stacktrace
  token
  traceback
].freeze
REDACTED =
"[redacted]"
MAX_DEPTH =
5
MAX_ARRAY_LENGTH =
20
MAX_STRING_LENGTH =
500

Class Method Summary collapse

Class Method Details

.create(source:, category:, title:, description:, **options) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/logbrew/support_ticket.rb', line 51

def create(source:, category:, title:, description:, **options)
  Validation.require_allowed_value("support ticket source", source, SOURCES)
  Validation.require_allowed_value("support ticket category", category, CATEGORIES)

  draft = {
    "source" => source,
    "category" => category,
    "title" => required_string("support ticket title", title),
    "description" => required_string("support ticket description", description)
  }
  add_optional_string(draft, "project_id", options[:project_id])
  add_optional_string(draft, "environment", options[:environment])
  add_optional_string(draft, "runtime", options[:runtime])
  add_optional_string(draft, "framework", options[:framework])
  add_optional_string(draft, "sdk_package", options[:sdk_package])
  add_optional_string(draft, "sdk_version", options[:sdk_version])
  add_optional_string(draft, "release", options[:release])
  add_trace_id(draft, options[:trace_id])
  add_optional_string(draft, "event_id", options[:event_id])
  add_diagnostics(draft, options[:diagnostics]) if options.key?(:diagnostics)
  draft
end