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
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
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:
-
any valid url given
-
UUID
-
Upoading for custom url
-
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
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