Sha256: aeea73c6d439d0af43b5e9728dd6eae12ab942b362af1ea051ea5fdc59e74144

Contents?: true

Size: 856 Bytes

Versions: 8

Compression:

Stored size: 856 Bytes

Contents

module Grape
  module Validations
    module Types
      # +Virtus::Attribute+ implementation for parameters
      # that are multipart file objects. Actual handling
      # of these objects is provided by +Rack::Request+;
      # this class is here only to assert that rack's
      # handling has succeeded, and to prevent virtus
      # from interfering.
      class File < Virtus::Attribute
        def coerce(input)
          # Processing of multipart file objects
          # is already taken care of by Rack::Request.
          # Nothing to do here.
          input
        end

        def value_coerced?(value)
          # Rack::Request creates a Hash with filename,
          # content type and an IO object. Do a bit of basic
          # duck-typing.
          value.is_a?(::Hash) && value.key?(:tempfile)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
grape-1.2.2 lib/grape/validations/types/file.rb
grape-1.2.1 lib/grape/validations/types/file.rb
grape-1.2.0 lib/grape/validations/types/file.rb
grape-1.1.0 lib/grape/validations/types/file.rb
grape-1.0.3 lib/grape/validations/types/file.rb
grape-1.0.2 lib/grape/validations/types/file.rb
grape-1.0.1 lib/grape/validations/types/file.rb
grape-1.0.0 lib/grape/validations/types/file.rb