Sha256: 2226beb22d5bccabff5e81506292bb6e3a964b9535689df7f8003c80bab3ec33

Contents?: true

Size: 771 Bytes

Versions: 1

Compression:

Stored size: 771 Bytes

Contents

require 'json'
module SwitchGear
  module CircuitBreaker
    class Failure
      def self.from_json(json)
        failure = JSON.parse(json)
        error = Object.const_get(failure["error"])
        error = error.new(failure["message"])
        new(error, Time.at(failure["timestamp"]).utc)
      end

      def initialize(error, recorded = Time.now.utc)
        @error = error
        @recorded = recorded
      end

      def timestamp
        recorded
      end

      def to_s
        "[#{error.class}] - #{error.message}"
      end

      def to_json
        JSON.generate({
          error: error.class,
          message: error.message,
          timestamp: timestamp.to_i
        })
      end

      private
      attr_reader :error, :recorded
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
switch_gear-0.3.0 lib/switch_gear/circuit_breaker/failure.rb