module Bukelatta::Ext::AwsS3BucketExt

Public Instance Methods

auto_redirect() { |bckt| ... } click to toggle source
# File lib/bukelatta/ext/aws_s3_bucket_ext.rb, line 3
def auto_redirect
  ret = nil
  bckt = self

  begin
    ret = yield(bckt)
  rescue Aws::S3::Errors::PermanentRedirect => e
    res_body = MultiXml.parse(e.context.http_response.body.read)
    edpnt = res_body['Error']['Endpoint']
    clnt = Aws::S3::Client.new(endpoint: "https://#{edpnt}")
    rsrc = Aws::S3::Resource.new(client: clnt)
    bckt = rsrc.bucket(bckt.name)
    retry
  end

  ret
end