Sha256: 37a7b45e8278be352e98a52831f408c16d081d9f45d5b1155343252056f2514c

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

require 'surveymonkey/logging'

class Surveymonkey::Error < StandardError
  # constants

  ##
  # API status codes, documented upstream.

  Status_codes = {
    0 => 'Success',
    1 => 'Not Authenticated',
    2 => 'Invalid User Credentials',
    3 => 'Invalid Request',
    4 => 'Unknown User',
    5 => 'System Error'
  }

  attr_reader :status, :status_name, :status_codes, :errmsg

  ##
  # Create a new Surveymonkey::Error object.  Pass in the hash parsed from the
  # JSON object returned by the API.

  def initialize(error = {}, status_codes = Status_codes)
    begin
      @status_codes = status_codes
      @status       = error.fetch('status', 0)
      @errmsg       = error.fetch('errmsg', '')
      @status_name  = _status_name(@status)

    rescue StandardError => e
      $log.error(sprintf("%s: unable to parse '%s' as error\n", __method__, error.inspect))
      raise
    end
  end

  ##
  # Stringify a Surveymonkey::Error object.

  def to_s
    sprintf("Error %i (%s): %s", self.status, self.status_name, self.errmsg)
  end

  private

  def _status_name(error) # :nodoc:
    begin
      self.status_codes.fetch(error)
    rescue StandardError => e
      $log.error(sprintf("%s: %i is not a valid error code\n", __method__, error))
      raise
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
surveymonkey-0.4.0 lib/surveymonkey/error.rb
surveymonkey-0.3.0 lib/surveymonkey/error.rb