8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/httpx/transcoder/multipart/part.rb', line 8
def call(value)
if value.respond_to?(:filename) && value.respond_to?(:content_type) && value.respond_to?(:read)
return value, value.content_type, value.filename
end
content_type = filename = nil
if value.is_a?(Hash)
content_type = value[:content_type]
filename = value[:filename]
value = value[:body]
end
value = value.open(File::RDONLY) if Object.const_defined?(:Pathname) && value.is_a?(Pathname)
if value.respond_to?(:path) && value.respond_to?(:read)
filename ||= File.basename(value.path)
content_type ||= MimeTypeDetector.call(value, filename) || "application/octet-stream"
[value, content_type, filename]
else
[StringIO.new(value.to_s), content_type || "text/plain", filename]
end
end
|