Sha256: 3c8cdda194b5cb910476b54377fab6df6e59305648480627d507cb80c65445c8

Contents?: true

Size: 889 Bytes

Versions: 7

Compression:

Stored size: 889 Bytes

Contents

require 'faraday'

module AngellistApi
  module Request
    class MultipartWithFile < Faraday::Middleware
      def call(env)
        if env[:body].is_a?(Hash)
          env[:body].each do |key, value|
            if value.is_a?(File)
              env[:body][key] = Faraday::UploadIO.new(value, mime_type(value.path), value.path)
            elsif value.is_a?(Hash) && (value['io'].is_a?(IO) || value['io'].is_a?(StringIO))
              env[:body][key] = Faraday::UploadIO.new(value['io'], mime_type('.'+value['type']), '')
            end
          end
        end

        @app.call(env)
      end

      private

      def mime_type(path)
        case path
        when /\.jpe?g/i
          'image/jpeg'
        when /\.gif$/i
          'image/gif'
        when /\.png$/i
          'image/png'
        else
          'application/octet-stream'
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
angellist_api-1.1.0 lib/angellist_api/request/multipart_with_file.rb
angellist_api-1.0.7 lib/angellist_api/request/multipart_with_file.rb
angellist_api-1.0.6 lib/angellist_api/request/multipart_with_file.rb
angellist_api-1.0.5 lib/angellist_api/request/multipart_with_file.rb
angellist_api-1.0.4 lib/angellist_api/request/multipart_with_file.rb
angellist_api-1.0.3 lib/angellist_api/request/multipart_with_file.rb
angellist_api-1.0.2 lib/angellist_api/request/multipart_with_file.rb