Sha256: 2909ce871d40a8fdf068b8791c606335a696759e67a515f6a3f552f3f135e72f

Contents?: true

Size: 1.1 KB

Versions: 20

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module HTTPX
  module Transcoder::Multipart
    module Part
      module_function

      def call(value)
        # take out specialized objects of the way
        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)
          # either a File, a Tempfile, or something else which has to quack like a file
          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
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
httpx-1.3.4 lib/httpx/transcoder/multipart/part.rb
httpx-1.3.3 lib/httpx/transcoder/multipart/part.rb
httpx-1.3.2 lib/httpx/transcoder/multipart/part.rb
httpx-1.3.1 lib/httpx/transcoder/multipart/part.rb
httpx-1.3.0 lib/httpx/transcoder/multipart/part.rb
httpx-1.2.6 lib/httpx/transcoder/multipart/part.rb
httpx-1.2.4 lib/httpx/transcoder/multipart/part.rb
httpx-1.2.3 lib/httpx/transcoder/multipart/part.rb
httpx-1.2.2 lib/httpx/transcoder/multipart/part.rb
httpx-1.2.1 lib/httpx/transcoder/multipart/part.rb
httpx-1.2.0 lib/httpx/transcoder/multipart/part.rb
httpx-1.1.5 lib/httpx/transcoder/multipart/part.rb
httpx-1.1.4 lib/httpx/transcoder/multipart/part.rb
httpx-1.1.3 lib/httpx/transcoder/multipart/part.rb
httpx-1.1.2 lib/httpx/transcoder/multipart/part.rb
httpx-1.1.1 lib/httpx/transcoder/multipart/part.rb
httpx-1.1.0 lib/httpx/transcoder/multipart/part.rb
httpx-1.0.2 lib/httpx/transcoder/multipart/part.rb
httpx-1.0.1 lib/httpx/transcoder/multipart/part.rb
httpx-1.0.0 lib/httpx/transcoder/multipart/part.rb