class S3BucketHelper
  def initialize
    Aws.config.update(
      region: 'us-east-1',
      credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
    )
  end

  def all_emails
    prefix = ConfigHelper.instance[:s3][:path_to_emails]
    bucket.objects(prefix: prefix, delimiter: '').collect(&:key).reject do |e|
      e.include?('SETUP')
    end
  end

  def clean_up_emails
    all_emails.each do |email|
      bucket.object(email).delete
    end
  end

  def email_by_subject(subject)
    all_emails.find{|e| read_email(e).include?("Subject: #{subject}")}
  end

  def read_email(key)
    email = s3_client.get_object(bucket: ConfigHelper.instance[:s3][:qabucket], key: key)
    email.body.read
  end

  private

  def bucket
    s3_resource.bucket(ConfigHelper.instance[:s3][:qabucket])
  end

  def s3_resource
    @s3_resource ||= Aws::S3::Resource.new
  end

  def s3_client
    @s3_client ||= Aws::S3::Client.new
  end
end
