Module: S3MediaServerApi::Uploader

Defined in:
lib/s3_media_server_api/uploader.rb,
lib/s3_media_server_api/file_part.rb

Overview

Module with file uplod finctionality implementation

Defined Under Namespace

Classes: FilePart, PartUploadError, UploaderError

Class Method Summary collapse

Class Method Details

.upload(file_path) ⇒ Object

uploads file to amazon s3 and create AwsFile object parameter : filepath - file path in file system returns: [AwsFile object]

Example

file = S3MediaServerApi::Uploader.upload(/home/vasya/my_awesome_file.awesome)



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/s3_media_server_api/uploader.rb', line 32

def upload(file_path)
  parts = []
  file = AwsFile.create_from_path(file_path)
  default_part_size = file.default_part_size
  aws_file_uuid = file.uuid
  uploads_count = file.uploads_count
  parts = compute_parts(file_path, default_part_size)
  Parallel.each(parts, in_threads: S3MediaServerApi::Config.upload_thread_count) do |part|
    signed_upload_url = AwsFile.get_signed_upload_url(aws_file_uuid, part[:part_number])

    raise PartUploadError.new("Part #{part[:part_number]} wasn't uploaded") unless upload_part(signed_upload_url, part[:body].read)
  end

  AwsFile.complete_upload(aws_file_uuid)
ensure
  close_all_parts(parts)
end

.upload_from_url(url) ⇒ Object



17
18
19
20
21
22
# File 'lib/s3_media_server_api/uploader.rb', line 17

def upload_from_url(url)
  file = S3MediaServerApi::Downloader.download_by_url(url)
  upload(file)
ensure
  S3MediaServerApi::Downloader.remove_if_exists(file)
end