Sha256: 29e1664ed529c2d23ccc4d0dd10746049a7c6de6bea0a639d945265382cda160

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

module Ebanx
  module Command
    class Command
      @request_body = false

      attr_accessor :params, :request_method, :request_action, :response_type, :request_body

      def valid?
        validate
      end

      def params
        # Wraps parameters into request_body
        if @request_body
          { request_body: @params.to_json }
        else
          @params
        end
      end

      protected
      def validate
        raise NotImplementedError
      end

      def validate_presence(*names)
        raise ArgumentError.new("Missing argument #{names}") unless @params.dig *names
        true
      end

      def validate_with_callback(names, callback)
        callback.call(@params.dig(*names), @params)
      end

      def validate_presence_or(name1, name2)
        unless @params.include?(name1) || @params.include?(name2)
          raise ArgumentError.new("Missing argument, obligatory #{name1} or #{name2}")
        end

        true
      end

      def validate_presence_either(args)
        args.each do |arg|
          if @params.include?(arg)
            return true
          end
        end

        raise ArgumentError.new("Missing all arguments: #{args.join(", ")}.")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ebanx-1.3.5 lib/ebanx/command/command.rb
ebanx-1.3.4 lib/ebanx/command/command.rb
ebanx-1.3.3 lib/ebanx/command/command.rb
ebanx-1.3.2 lib/ebanx/command/command.rb