Sha256: ce4bd4dc4eb73949450f4f90e5f768c9fd034d6defcea21ffb48050edc43e62b

Contents?: true

Size: 1 KB

Versions: 27

Compression:

Stored size: 1 KB

Contents

module Octobat
  class OctobatError < StandardError
    attr_accessor :message
    attr_reader :error
    attr_reader :http_status
    attr_reader :http_body
    attr_reader :json_body

    def initialize(error=nil, http_status=nil, http_body=nil, json_body=nil)
      @error = error
      @http_status = http_status
      @http_body = http_body
      @json_body = json_body
    end
    
    def message
      @message ||= generate_message_from_error
    end

    def to_s
      status_string = @http_status.nil? ? "" : "(Status #{@http_status}) "
      "#{status_string}#{message}"
    end
    
    def generate_message_from_error
      return "" if @error.nil?
      a = []
      
      @error.each_key do |k|
        msg = k.eql?(:global) ? "" : "#{k.to_s}: "
        msg << "#{serialize_errors_from(@error[k])}"
        a << msg
      end
      
      a.join(". ")
    end
    
    def serialize_errors_from(err)
      a = []
      err.each do |e|
        a << "#{e[:details]}"
      end
      a.join(', ')
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
octobat-2.0.27 lib/octobat/errors/octobat_error.rb
octobat-2.0.26 lib/octobat/errors/octobat_error.rb
octobat-2.0.25 lib/octobat/errors/octobat_error.rb
octobat-2.0.24 lib/octobat/errors/octobat_error.rb
octobat-2.0.23 lib/octobat/errors/octobat_error.rb
octobat-2.0.22 lib/octobat/errors/octobat_error.rb
octobat-2.0.21 lib/octobat/errors/octobat_error.rb
octobat-2.0.20 lib/octobat/errors/octobat_error.rb
octobat-2.0.19 lib/octobat/errors/octobat_error.rb
octobat-2.0.18 lib/octobat/errors/octobat_error.rb
octobat-2.0.17 lib/octobat/errors/octobat_error.rb
octobat-2.0.16 lib/octobat/errors/octobat_error.rb
octobat-2.0.15 lib/octobat/errors/octobat_error.rb
octobat-2.0.14 lib/octobat/errors/octobat_error.rb
octobat-2.0.12 lib/octobat/errors/octobat_error.rb
octobat-2.0.11 lib/octobat/errors/octobat_error.rb
octobat-2.0.10 lib/octobat/errors/octobat_error.rb
octobat-2.0.9 lib/octobat/errors/octobat_error.rb
octobat-2.0.8 lib/octobat/errors/octobat_error.rb
octobat-2.0.7 lib/octobat/errors/octobat_error.rb