Class: Prebundler::S3Backend

Inherits:
Object
  • Object
show all
Defined in:
lib/prebundler/s3_backend.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ S3Backend

Returns a new instance of S3Backend.



9
10
11
12
13
14
15
16
# File 'lib/prebundler/s3_backend.rb', line 9

def initialize(options = {})
  @bucket             = options.fetch(:bucket)

  @client             = options.fetch(:client, nil)
  @access_key_id      = options.fetch(:access_key_id, nil)
  @secret_access_key  = options.fetch(:secret_access_key, nil)
  @region             = options.fetch(:region) { ENV['AWS_REGION'] || 'us-east-1' }
end

Instance Attribute Details

#access_key_idObject (readonly)

Returns the value of attribute access_key_id.



7
8
9
# File 'lib/prebundler/s3_backend.rb', line 7

def access_key_id
  @access_key_id
end

#bucketObject (readonly)

Returns the value of attribute bucket.



7
8
9
# File 'lib/prebundler/s3_backend.rb', line 7

def bucket
  @bucket
end

#regionObject (readonly)

Returns the value of attribute region.



7
8
9
# File 'lib/prebundler/s3_backend.rb', line 7

def region
  @region
end

#secret_access_keyObject (readonly)

Returns the value of attribute secret_access_key.



7
8
9
# File 'lib/prebundler/s3_backend.rb', line 7

def secret_access_key
  @secret_access_key
end

Instance Method Details

#docker_flagsObject



60
61
62
# File 'lib/prebundler/s3_backend.rb', line 60

def docker_flags
  []
end

#list_filesObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/prebundler/s3_backend.rb', line 32

def list_files
  truncated = true
  continuation_token = nil
  files = []
  base_options = {
    bucket: bucket,
    prefix: "#{Bundler.local_platform}/#{Prebundler.platform_version}/#{Gem.extension_api_version}"
  }

  while truncated
    options = if continuation_token
      base_options.merge(continuation_token: continuation_token)
    else
      base_options
    end

    response = client.list_objects_v2(options)
    truncated = response.is_truncated
    continuation_token = response.next_continuation_token

    response.contents.each do |file|
      files << file.key
    end
  end

  files
end

#retrieve_file(source_file, dest_file) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/prebundler/s3_backend.rb', line 24

def retrieve_file(source_file, dest_file)
  client.get_object(
    bucket: bucket,
    key: source_file,
    response_target: dest_file
  )
end

#store_file(source_file, dest_file) ⇒ Object



18
19
20
21
22
# File 'lib/prebundler/s3_backend.rb', line 18

def store_file(source_file, dest_file)
  File.open(source_file) do |io|
    client.put_object(bucket: bucket, key: dest_file, body: io)
  end
end