class Rusic::Uploaders::Base

Attributes

api_host[RW]
api_key[RW]
file[RW]
theme[RW]

Public Class Methods

new(file) click to toggle source
# File lib/rusic/uploaders/base.rb, line 8
def initialize(file)
  @file = file
end

Public Instance Methods

perform() click to toggle source
# File lib/rusic/uploaders/base.rb, line 32
def perform
  fail NotImplementedError, 'define a #perform method on your uploader'
end
upload_file(options = {}) click to toggle source
# File lib/rusic/uploaders/base.rb, line 12
def upload_file(options = {})
  @api_key = options.fetch('api_key')
  @api_host = options.fetch('api_host', 'api.rusic.com')
  @theme = options.fetch('theme')

  report(message: message, complete: '', type: 'inline', indent_size: 2) do
    begin
      perform
      print(' [done]'.green)
    rescue RestClient::UnprocessableEntity, RestClient::Exception => e
      puts e
      print(' [failed]'.red)
    end
  end
rescue KeyError => e
  puts
  puts e.message
  exit(1)
end

Protected Instance Methods

client() click to toggle source
# File lib/rusic/uploaders/base.rb, line 42
def client
  headers = {
    'X-API-Key' => api_key,
    'Accept' => 'application/vnd.rusic.v1+json'
  }

  @client ||= RestClient::Resource.new("http://#{api_host}", headers: headers)
end
message() click to toggle source
# File lib/rusic/uploaders/base.rb, line 38
def message
  "Uploading #{file.descriptor}"
end