Module: MultiVideoStreaming::Utils::S3

Defined in:
lib/multi_video_streaming/utils/s3/generate_presign_url.rb,
lib/multi_video_streaming/utils/s3/create_multipart_upload.rb,
lib/multi_video_streaming/utils/s3/complete_multipart_upload.rb,
lib/multi_video_streaming/utils/s3/generate_presign_part_url.rb

Class Method Summary collapse

Class Method Details

.complete_multipart_upload(bucket:, key:, upload_id:, multipart_upload:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/multi_video_streaming/utils/s3/complete_multipart_upload.rb', line 6

def self.complete_multipart_upload(bucket:, key:, upload_id:, multipart_upload:)
  raise MultiVideoStreaming::Errors::MissingParam.new('bucket') if bucket.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('key') if key.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('upload_id') if upload_id.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('multipart_upload') if multipart_upload.nil?

  s3_client = Aws::S3::Client.new(
    region: ENV['AWS_REGION'],
  )

  s3_client.complete_multipart_upload(
    bucket:,
    key:,
    upload_id:,
    multipart_upload:
  )
end

.create_multipart_upload(bucket:, key:, content_type:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/multi_video_streaming/utils/s3/create_multipart_upload.rb', line 6

def self.create_multipart_upload(bucket:, key:, content_type: )
  raise MultiVideoStreaming::Errors::MissingParam.new('bucket') if bucket.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('key') if key.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('content_type') if content_type.nil?

  s3_client = Aws::S3::Client.new(
    region: ENV['AWS_REGION'],
  )

  s3_client.create_multipart_upload(
    bucket:,
    key:,
    content_type:
  )
end

.generate_presign_part_url(upload_id:, bucket:, part_number:, key:, expires_in:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/multi_video_streaming/utils/s3/generate_presign_part_url.rb', line 6

def self.generate_presign_part_url(upload_id:, bucket:, part_number:, key:, expires_in:)
  raise MultiVideoStreaming::Errors::MissingParam.new('upload_id') if upload_id.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('part_number') if part_number.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('bucket') if bucket.nil?
  raise MultiVideoStreaming::Errors::MissingParam.new('key') if key.nil?

  signer = Aws::S3::Presigner.new

  signer.presigned_url(
    :upload_part,
    bucket:,
    key:,
    upload_id:,
    part_number:,
    expires_in:
  )
end

.generate_presign_url(method:, bucket:, key:, download:, expires_in:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/multi_video_streaming/utils/s3/generate_presign_url.rb', line 6

def self.generate_presign_url(method:, bucket:, key:, download:, expires_in: )
  methods = { :get => :get_object, :put => :put_object, :delete => :delete_object }
  method_to_generate_presign_url = methods[method]
  raise MultiVideoStreaming::Errors::InvalidS3MethodName.new(method) if method_to_generate_presign_url.nil?
  signer = Aws::S3::Presigner.new
  if download
    signer.presigned_url(method_to_generate_presign_url, bucket: bucket, key: key, expires_in: expires_in, whitelist_headers: ['response-content-disposition'], response_content_disposition: 'attachment')
  else
    signer.presigned_url(method_to_generate_presign_url, bucket: bucket, key: key, expires_in: expires_in)
  end
end