Sha256: 535fc5e61a71971d0cb475bbc51e1265598ce64f1fd4e8c06da86d9554e2e625

Contents?: true

Size: 807 Bytes

Versions: 1

Compression:

Stored size: 807 Bytes

Contents

module RenuoUpload
  def self.upload!(file)
    Uploader.new(RenuoUpload.config).upload(file)
  end

  class Uploader
    def initialize(config)
      @config = config
      @policy = retrieve_policy
    end

    def upload(file)
      RestClient.post upload_url, upload_hash(file)
      uploaded_file_url file
    end

    private

    def retrieve_policy
      response = RestClient.post @config.signing_url, api_key: @config.api_key
      JSON.parse response.body
    end

    def upload_url
      @policy['url']
    end

    def upload_data
      @policy['data']
    end

    def upload_hash(file)
      Hash[upload_data.map { |key, value| [key.tr('_', '-'), value] }].merge file: file
    end

    def uploaded_file_url(file)
      @policy['file_url_path'].concat File.basename(file)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
renuo-upload-0.0.1 lib/renuo_upload/uploader.rb