Sha256: 66aa66d4716c887dbc6b6c10cb7c75e04a1b09096fdafb1237d3dcc0c3a94438

Contents?: true

Size: 1.06 KB

Versions: 9

Compression:

Stored size: 1.06 KB

Contents

module Goliath
  module Rack
    module Validation
      module Required
        NON_WHITESPACE_REGEXP = %r![^[:space:]]!

        def required_setup!(opts={})
          if @key.is_a?(String) && @key.include?('.')
            @key = @key.split('.')
          end
        end

        def call(env)
          unless @optional
            return validation_error(400, "#{@type} #{@message}") unless key_valid?(env['params'])
          end
          super if defined?(super)
        end

        def key_valid?(params)
          val = fetch_key(params)

          case val
          when nil
            return false

          when String
            # if val is a string it must not be empty
            return false if val !~ NON_WHITESPACE_REGEXP

          when Array
            unless val.compact.empty?
              val.each do |k|
                return true unless k.is_a?(String)
                return true unless k !~ NON_WHITESPACE_REGEXP
              end
            end

            return false
          end

          true
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
goliath-1.0.7 lib/goliath/rack/validation/required.rb
goliath-1.0.6 lib/goliath/rack/validation/required.rb
goliath-1.0.5 lib/goliath/rack/validation/required.rb
goliath-1.0.4 lib/goliath/rack/validation/required.rb
goliath-1.0.3 lib/goliath/rack/validation/required.rb
goliath-1.0.2 lib/goliath/rack/validation/required.rb
goliath-1.0.1 lib/goliath/rack/validation/required.rb
goliath-1.0.0 lib/goliath/rack/validation/required.rb
goliath-1.0.0.beta.1 lib/goliath/rack/validation/required.rb