Sha256: 1cad78da715c7a6a0be6d9e4672e980fa516df24b6edd8ef677873ec7491354e

Contents?: true

Size: 1.21 KB

Versions: 5

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module LedgerSync
  class Error
    class OperationError < Error
      attr_reader :operation, :response

      def initialize(message: nil, operation:, response: nil)
        message ||= 'Operation failed.'
        @operation = operation
        @response = response
        super(message: message)
      end

      class DuplicateLedgerResourceError < self; end
      class NotFoundError < self; end
      class LedgerValidationError < self; end
      class PerformedOperationError < self
        def initialize(message: nil, operation:, response: nil)
          message ||= 'Operation has already been performed. Please check the result.'

          super(
            message: message,
            operation: operation,
            response: response
          )
        end
      end

      class ValidationError < self
        attr_reader :attribute,
                    :validation

        def initialize(message:, attribute:, operation:, validation:, response:nil)
          @attribute = attribute
          @validation = validation

          super(
            message: message,
            operation: operation,
            response: response
          )
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ledger_sync-1.4.2 lib/ledger_sync/error/operation_errors.rb
ledger_sync-1.4.1 lib/ledger_sync/error/operation_errors.rb
ledger_sync-1.4.0 lib/ledger_sync/error/operation_errors.rb
ledger_sync-1.3.5 lib/ledger_sync/error/operation_errors.rb
ledger_sync-1.3.4 lib/ledger_sync/error/operation_errors.rb