Sha256: 0e86fb7d32396d424a964115660dcda2b50fd671132c2f67afa33f035474daa7

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require 'aws-sdk'
require_relative '../service'
require_relative '../services/check_acl'

class OpenBuckets < Service
  def call(access_key:, secret:)
    @access_key, @secret = access_key, secret
    collect_data
  rescue => e
    puts e
    []
  end

  def client
    @client ||= Aws::S3::Resource.new(
     credentials: Aws::Credentials.new(@access_key, @secret),
     region: 'eu-central-1'
    )
  end

  def collect_data
    buckets = client.buckets.map do |b|
      region = client.client.get_bucket_location(bucket: b.name).location_constraint
      s3tempclient = Aws::S3::Resource.new(
       credentials: Aws::Credentials.new(@access_key, @secret),
       region: region
     )
     status = CheckAcl.call(s3tempclient.client.get_bucket_acl({bucket: b.name}))

     bucket = Bucket.new(b.name, region, status, s3tempclient.client, [])

     s3tempclient.bucket(b.name).objects.each do |obj|
       bucket.keys << obj.key
     end

     bucket
   end
  end

  Bucket = Struct.new(:name, :region, :public, :client, :keys)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
s3_sec-0.1.0 lib/s3sec/services/open_buckets.rb