• Jump To … +
    bcx.rb http.rb oauth.rb configuration.rb oauth.rb access.rb authorization.rb comment.rb person.rb project.rb todo.rb todolist.rb response_error.rb version.rb
  • response_error.rb

  • ¶

    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