Sha256: 14dd4194b5e178de715fcf9c1c518103356480840332924e2b4910a4a21744d3
Contents?: true
Size: 1.49 KB
Versions: 9
Compression:
Stored size: 1.49 KB
Contents
module Vimeo module Advanced module SimpleUpload class Chunk MULTIPART_BOUNDARY = "-----------RubyMultipartPost" attr_reader :id, :index attr_reader :task, :vimeo attr_reader :data, :size def initialize(task, data) @task = task @vimeo = task.vimeo @data = data @size = data.size @index = task.chunks.count end # Performs the upload via Multipart. def upload endpoint = "#{task.endpoint}&chunk_id=#{index}" response = task.oauth_consumer.request(:post, endpoint, vimeo.get_access_token, {}, {}) do |req| req.set_content_type("multipart/form-data", { "boundary" => MULTIPART_BOUNDARY }) io = StringIO.new(data) io.instance_variable_set :"@original_filename", task.filename def io.original_filename; @original_filename; end def io.content_type; "application/octet-stream"; end parts = [] parts << Parts::FilePart.new(MULTIPART_BOUNDARY, "file_data", io) parts << Parts::EpiloguePart.new(MULTIPART_BOUNDARY) ios = parts.map{|p| p.to_io } req.content_length = parts.inject(0) {|sum,i| sum + i.length } req.body_stream = CompositeReadIO.new(*ios) :continue end # free memory (for big file uploads) @data = nil @id = response.body end end end end end
Version data entries
9 entries across 9 versions & 2 rubygems