Sha256: b8c4ef643785c1548a29cb9bb516ad4576c026ad1acb20e3e6b24d9c0c9ba420

Contents?: true

Size: 1012 Bytes

Versions: 4

Compression:

Stored size: 1012 Bytes

Contents

# ## Response Error
#
# If the response whilst fetching a resource is a 4xx or 5xx, Bcx will raise a `Bcx::ResponseError` exception.
#
# Examples:
#
#     client.projects.create!(name: '')
#     => Bcx::ResponseError: 422 POST https://basecamp.com/2274488/api/v1/projects.json | Errors: name can't be blank
#
# You can rescue this exception to grab the status, method, URL and errors individually.
#
#     begin
#       client.projects.create!(name: '')
#     rescue Bcx::ResponseError => response
#       response.method # => "POST"
#       response.status # => 422
#       response.url # => "https://basecamp.com/2274488/api/v1/projects.json"
#       response.errors # => ["name can't be blank"]
#     end
#
module Bcx
  class ResponseError < Rapidash::ResponseError

    def errors
      return body if body.kind_of?(String)

      messages = []

      body.each_pair do |attribute, msgs|
        msgs.each { |msg| messages.push "#{attribute} #{msg}" }
      end

      messages.join(', ')
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bcx-1.0.0 lib/bcx/response_error.rb
bcx-0.4.0 lib/bcx/response_error.rb
bcx-0.3.0 lib/bcx/response_error.rb
bcx-0.2.1 lib/bcx/response_error.rb