Sha256: ab02416837866c7d3d9c03cd1836e23bea00af6b6f20c2f3e0d03a04e54f06ab

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

module Vimeo
  module Advanced
    module SimpleUpload
      class UploadError < RuntimeError; end

      autoload :Task,         'vimeo/advanced/simple_upload/task'
      autoload :Chunk,        'vimeo/advanced/simple_upload/chunk'

      # Uploads data (IO streams or files) to Vimeo.
      def upload(uploadable)
        case uploadable
        when File, Tempfile
          upload_file(uploadable)
        when String
          upload_file(File.new(uploadable))
        else
          upload_io(uploadable)
        end
      end

      protected

      # Uploads an IO to Vimeo.
      def upload_io(io, size, filename = 'io.data')
        raise "#{io.inspect} must respond to #read" unless io.respond_to?(:read)
        task = Task.new(self, @oauth_consumer, io, size, filename)
        task.execute
        task.video_id
      end

      # Helper for uploading files to Vimeo.
      def upload_file(file)
        file_path = file.path

        size     = File.size(file_path)
        basename = File.basename(file_path)
        io       = File.open(file_path)
        io.binmode

        upload_io(io, size, basename).tap do
          io.close
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
vimeo-1.5.3 lib/vimeo/advanced/simple_upload.rb
slainer68_vimeo-1.5.2 lib/vimeo/advanced/simple_upload.rb
vimeo-1.5.2 lib/vimeo/advanced/simple_upload.rb
vimeo-1.5.1 lib/vimeo/advanced/simple_upload.rb
slainer68_vimeo-1.4.4 lib/vimeo/advanced/simple_upload.rb