Sha256: c33d79e375e579701ed8d1d65cc7ecef84c6ddb4283e243beb566cec1e33b8d8

Contents?: true

Size: 977 Bytes

Versions: 3

Compression:

Stored size: 977 Bytes

Contents

module Expedition
  class Status

    SEVERITIES = {
      'S' => :success,
      'I' => :info,
      'W' => :warn,
      'E' => :error,
      'F' => :fatal
    }.freeze

    OK_SEVERITIES = %i(success info warn).freeze

    attr_reader :severity

    attr_reader :code

    attr_reader :message

    attr_reader :description

    attr_reader :executed_at

    def initialize(body)
      status = body ? body.first : {}

      @severity    = SEVERITIES[status['STATUS']]
      @code        = status['Code']
      @message     = status['Msg']
      @description = status['Description']
      @executed_at = Time.at(status['When']) rescue nil
    end

    def success?
      severity == :success
    end

    def info?
      severity == :info
    end

    def warn?
      severity == :warn
    end

    def error?
      severity == :error
    end

    def fatal?
      severity == :fatal
    end

    def ok?
      OK_SEVERITIES.include?(severity)
    end
  end
end # Expedition

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
expedition-0.4.0 lib/expedition/status.rb
expedition-0.3.0 lib/expedition/status.rb
expedition-0.2.0 lib/expedition/status.rb