Module: ForestAdminDatasourceZendesk::Plugins::CloseTicket::Errors

Defined in:
lib/forest_admin_datasource_zendesk/plugins/close_ticket/errors.rb

Overview

Decoding helpers for Zendesk’s structured update-error payloads.

Constant Summary collapse

ALREADY_CLOSED_DESCRIPTION =

Zendesk refuses any update on a closed ticket with this exact wording on the ‘status` field — detected so we can swap the raw stack for a clean message.

'closed prevents ticket update'.freeze

Class Method Summary collapse

Class Method Details

.already_closed?(error) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
# File 'lib/forest_admin_datasource_zendesk/plugins/close_ticket/errors.rb', line 13

def already_closed?(error)
  invalid = unwrap_record_invalid(error)
  return false unless invalid

  status_errors = invalid.errors.is_a?(Hash) ? Array(invalid.errors['status']) : []
  status_errors.any? do |entry|
    entry.is_a?(Hash) && entry['description'].to_s.include?(ALREADY_CLOSED_DESCRIPTION)
  end
end

.unwrap_record_invalid(error) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/forest_admin_datasource_zendesk/plugins/close_ticket/errors.rb', line 23

def unwrap_record_invalid(error)
  while error
    return error if error.is_a?(ZendeskAPI::Error::RecordInvalid)

    error = error.cause
  end
  nil
end