class Fastlane::Helper::S3ClientHelper

Attributes

access_key[R]
region[R]
secret_access_key[R]

Public Class Methods

new(access_key: nil, secret_access_key: nil, region: nil, s3_client: nil) click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 9
def initialize(access_key: nil, secret_access_key: nil, region: nil, s3_client: nil)
  @access_key = access_key
  @secret_access_key = secret_access_key
  @region = region

  @client = s3_client
end

Public Instance Methods

delete_file(bucket_name, file_name) click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 42
def delete_file(bucket_name, file_name)
  bucket = find_bucket!(bucket_name)
  file = bucket.object(file_name)
  file.delete
end
find_bucket!(bucket_name) click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 48
def find_bucket!(bucket_name)
  bucket = Aws::S3::Bucket.new(bucket_name, client: client)
  raise "Bucket '#{bucket_name}' not found" unless bucket.exists?

  return bucket
end
list_buckets() click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 17
def list_buckets
  return client.list_buckets
end
upload_file(bucket_name, file_name, file_data, acl) click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 21
def upload_file(bucket_name, file_name, file_data, acl)
  bucket = find_bucket!(bucket_name)
  details = {
    acl: acl,
    key: file_name,
    body: file_data
  }
  obj = bucket.put_object(details)

  # When you enable versioning on a S3 bucket,
  # writing to an object will create an object version
  # instead of replacing the existing object.
  # http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
  if obj.kind_of?(Aws::S3::ObjectVersion)
    obj = obj.object
  end

  # Return public url
  obj.public_url.to_s
end

Private Instance Methods

client() click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 59
def client
  @client ||= Aws::S3::Client.new(
    {
      region: region,
      credentials: create_credentials
    }.compact
  )
end
create_credentials() click to toggle source
# File fastlane/lib/fastlane/helper/s3_client_helper.rb, line 68
def create_credentials
  return nil if access_key.to_s.empty? || secret_access_key.to_s.empty?

  Aws::Credentials.new(
    access_key,
    secret_access_key
  )
end