Skip to content

Handling responses that do not have 200 HTTP status #589

@kenvatian

Description

@kenvatian

When I use https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#create-ticket to create a ticket with attachments, I got an error message of KeyError: key not found: :method, which is masking the actual error message about Status 422 {"error"=>"RecordInvalid", "description"=>"Record validation errors", "details"=>{"base"=>[{"description"=>"Uploads is invalid"}]}}.

The code is:

zendesk_client = ZendeskAPI::Client.new do |config|
...
end

ticket_attributes = {
  requester: ...,
  subject: ...,
  comment: {
    public: true,
    body: ...,
    author_id: ...,
    uploads: [...] // outputs from `ZendeskAPI::Attachment.new(zendesk_client, file: ...).save`
  },
  priority: ...,
  custom_fields: ...,
  tags: [...]
}

ZendeskAPI::Ticket.create!(zendesk_client, ticket_attributes)

And the error stack trace is:

at fetch(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/options.rb:84)
at exc_msg_and_response(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/error.rb:93)
at exc_msg_and_response!(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/error.rb:73)
at initialize(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/error.rb:12)
at initialize(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/error.rb:20)
at new(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/middleware/response/raise_error.rb:18)
at on_complete(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/middleware/response/raise_error.rb:18)
at block in call(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/middleware.rb:57)
at on_complete(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/response.rb:42)
at call(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/middleware.rb:56)
at call(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/middleware/response/raise_error.rb:8)
at build_response(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/rack_builder.rb:153)
at run_request(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/connection.rb:452)
at post(/usr/local/bundle/gems/faraday-2.13.3/lib/faraday/connection.rb:280)
at save!(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/actions.rb:32)
at block in create!(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/actions.rb:153)
at tap(<internal:kernel>:90)
at create!(/usr/local/bundle/gems/zendesk_api-3.1.1/lib/zendesk_api/actions.rb:152

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions