Sha256: d950e4598a1daa58abcf8e308c1ec588e25680d935653340dd20f06d3cac7d93

Contents?: true

Size: 848 Bytes

Versions: 3

Compression:

Stored size: 848 Bytes

Contents

require 'aws-sdk-s3'

module Itamae
  module Resource
    class S3File < File
      define_attribute :object_key, type: String, required: true
      define_attribute :region, type: String, required: true
      define_attribute :bucket, type: String, required: true
      define_attribute :profile, type: String, default: 'default'

      private

      def pre_action
        credentials = Aws::SharedCredentials.new(profile_name: attributes.profile)
        @s3 = Aws::S3::Client.new(region: attributes.region, credentials: credentials)
        attributes.content = fetch_content

        super
      end

      def fetch_content
        case @current_action
        when :create, :delete, :edit
          resp = @s3.get_object(bucket: attributes.bucket, key: attributes.object_key)
        end

        resp.body.read
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
itamae-spec-0.0.6 lib/itamae-spec/resource/s3_file.rb
itamae-spec-0.0.5 lib/itamae-spec/resource/s3_file.rb
itamae-spec-0.0.4 lib/itamae-spec/resource/s3_file.rb