Sha256: 94ed0c92548ec61da08b8bc50ab86310bd479e506d6c47a4b4126106839b2f40

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

# encoding: UTF-8

module GoodData::Bricks
  class BaseDownloader
    def initialize(params)
      @params = params
    end

    def pre_process(meta)
      meta
    end

    def download
      puts 'would download data'
      []
    end

    def backup(meta)
      puts 'would send a backup list of files to backup'
      files = meta.reduce([]) do |memo, item|
        memo << item[:filename]
      end

      bucket_name = @params[:s3_backup_bucket_name]

      s3 = AWS::S3.new(
        :access_key_id => @params[:aws_access_key_id],
        :secret_access_key => @params[:aws_secret_access_key])

      bucket = s3.buckets[bucket_name]
      bucket = s3.buckets.create(bucket_name) unless bucket.exists?

      files.each do |file|
        obj = bucket.objects[file]
        obj.write(Pathname.new(file))
      end
      meta
    end

    def post_process(meta)
      puts 'Maybe some postprocessing'
      meta
    end

    # Run downloader
    def run
      downloaded_data = download
      downloaded_data = pre_process(downloaded_data)
      backup(downloaded_data)
      downloaded_data = post_process(downloaded_data)

      downloaded_data.reduce([]) do |memo, item|
        item.has_key?(:state) ? memo.concat(item[:state]) : memo
      end.each do |item|
        key = item[:key]
        val = item[:value]

        puts "Saving metadata #{key} => #{val}"
        GoodData::ProjectMetadata[key] = val
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gooddata-0.6.0 lib/gooddata/bricks/base_downloader.rb