-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
file.rb
27 lines (26 loc) · 892 Bytes
/
file.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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) && value[:tempfile].is_a?(Tempfile)
end
end
end
end
end