Sha256: ca712437c831f051afdcba376326a808ad85a5b4addc2e501dc8dbd52d58c20f

Contents?: true

Size: 1.88 KB

Versions: 114

Compression:

Stored size: 1.88 KB

Contents

require 'aws-sdk-s3'

module Fastlane
  module Helper
    class S3ClientHelper
      attr_reader :access_key
      attr_reader :region

      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

      def list_buckets
        return client.list_buckets
      end

      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

      def delete_file(bucket_name, file_name)
        bucket = find_bucket!(bucket_name)
        file = bucket.object(file_name)
        file.delete
      end

      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

      private

      attr_reader :secret_access_key

      def client
        @client ||= Aws::S3::Client.new(
          {
            region: region,
            credentials: create_credentials
          }.compact
        )
      end

      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
    end
  end
end

Version data entries

114 entries across 114 versions & 4 rubygems

Version Path
fastlane-2.226.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.225.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.224.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.223.1 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.223.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.222.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.221.1 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.221.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.220.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.219.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.218.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-security-patched-2.216.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.217.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.216.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.215.1 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.215.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-mercafacil-2.214.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.214.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.213.0 fastlane/lib/fastlane/helper/s3_client_helper.rb
fastlane-2.212.2 fastlane/lib/fastlane/helper/s3_client_helper.rb