class Uploadcare::Api

Constants

CDN_URL_REGEX

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/uploadcare/api.rb, line 19
def initialize options = {}
  @options = Uploadcare::default_settings.merge(options)
  @uploader = Uploadcare::Uploader.new(options)
end

Public Instance Methods

api_request(method = :get, path = "/files/", params = {})
Alias for: request
cdn_url(base_cdn_url, *operations) click to toggle source
# File lib/uploadcare/api.rb, line 84
def cdn_url(base_cdn_url, *operations)
  m = CDN_URL_REGEX.match(base_cdn_url)
  operations = m['operations'].split('/-/') + operations if m['operations']
  path = operations.empty? ? m['uuid'] : [m['uuid'], operations].join('/-/')
  ::File.join @options[:static_url_base], path, '/'
end
Also aliased as: public_url
delete_file(uuid) click to toggle source
# File lib/uploadcare/api.rb, line 71
def delete_file uuid
  object = request :delete, "/files/#{uuid}/storage/"
  file = Uploadcare::Api::File.new(self, object) if object
end
file(source_cdn_url) click to toggle source
# File lib/uploadcare/api.rb, line 92
def file(source_cdn_url)
  m = CDN_URL_REGEX.match(source_cdn_url)
  resp = request(:get, "/files/#{m['uuid']}/")
  resp['operations'] = m['operations'].split('/-/') if m['operations']
  Api::File.new(self, resp)
end
files(page = 1) click to toggle source

get the files if caching is enabled - it will not get it for every request but you will need to reload it manualy

# File lib/uploadcare/api.rb, line 42
def files(page = 1)
  if @options[:cache_files] && @page_loaded == page
    @files ||= load_files(page)
  else
    load_files(page)
  end

  @page_loaded = page
  @files
end
load_files(page=1) click to toggle source

forse load of files list

# File lib/uploadcare/api.rb, line 54
def load_files(page=1)
  @files = Api::FileList.new(self, request(:get, '/files/', {page: page}))
end
project() click to toggle source
# File lib/uploadcare/api.rb, line 24
def project
  @project ||= Uploadcare::Api::Project.new(self, request(:get, "/project/"))
end
public_url(base_cdn_url, *operations)
Alias for: cdn_url
request(method = :get, path = "/files/", params = {}) click to toggle source
# File lib/uploadcare/api.rb, line 99
def request method = :get, path = "/files/", params = {}
  connection = Faraday.new url: @options[:api_url_base] do |frd|
    frd.request :url_encoded
    frd.use FaradayMiddleware::FollowRedirects, limit: 3
    frd.adapter :net_http # actually, default adapter, just to be clear
    frd.headers['Authorization'] = "Uploadcare.Simple #{@options[:public_key]}:#{@options[:private_key]}"
    frd.headers['Accept'] = "application/vnd.uploadcare-v#{@options[:api_version]}+json"
    frd.headers['User-Agent'] = Uploadcare::user_agent
  end 

  # get the response
  response = connection.send method, path, params

  # and try to get actual data
  # 404 code return in html instead of JSON, so - safety wrapper
  begin
    object = JSON.parse(response.body)
  rescue JSON::ParserError
    object = false
  end

  # and returning the object (file actually) or raise new error
  if response.status < 300
    object
  else
    message = "HTTP code #{response.status}"
    if object # add active_support god damn it
      message += ": #{object["detail"]}"
    else
      message += ": unknown error occured."
    end

    raise ArgumentError.new(message)
  end
end
Also aliased as: api_request
store_file(uuid) click to toggle source

TODO: implement better interface for geting file object by:

  1. any valid url given

  2. UUID

  3. Upoading for custom url

  4. Upload given file objects

def file uuid_or_url end

# File lib/uploadcare/api.rb, line 66
def store_file uuid
  object = request :put, "/files/#{uuid}/storage/"  
  file = Uploadcare::Api::File.new(self, object) if object
end
upload_file(path) click to toggle source

proxy file for uploading

# File lib/uploadcare/api.rb, line 29
def upload_file path
  @uploader.upload_file path
end
upload_file_by_url(url) click to toggle source

proxy url for uploading

# File lib/uploadcare/api.rb, line 34
def upload_file_by_url url
  @uploader.upload_url url
end
Also aliased as: upload_url
upload_url(url)
Alias for: upload_file_by_url
uuid(source) click to toggle source

wtf section just leave it here for backwards compability

# File lib/uploadcare/api.rb, line 78
def uuid(source)
  source = source.uuid if source.is_a? Api::File
  m = CDN_URL_REGEX.match(source)
  m && m['uuid']
end