Sha256: b1efae62c330a8462fbf829090dda6a40865bbd071956255adf5204ac3803d5c

Contents?: true

Size: 692 Bytes

Versions: 5

Compression:

Stored size: 692 Bytes

Contents

# frozen_string_literal: true
class Cognito
  class Client
    class Command
      include Procto.call(:run), AbstractType, Adamantium

      Failed = Class.new(StandardError)

      def run
        fail Failed, failure_reason unless success?

        present_response
      end

      private

      def failure_reason
        return response.reason if response.to_str.empty?

        response
      end

      abstract_method :present_response
      abstract_method :success?
      abstract_method :request
      abstract_method :connection

      def response
        connection.run(request)
      end
      memoize :response, freezer: :flat
    end # Command
  end # Client
end # Cognito

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cognito-client-0.5.4 lib/cognito/client/command.rb
cognito-client-0.5.3 lib/cognito/client/command.rb
cognito-client-0.5.2 lib/cognito/client/command.rb
cognito-client-0.5.1 lib/cognito/client/command.rb
cognito-client-0.5.0 lib/cognito/client/command.rb