Module: UploadUtils
- Included in:
- AV, FilestackClient, FilestackCommon, FilestackFilelink
- Defined in:
- lib/filestack/utils/utils.rb
Overview
Includes general utility functions for the Filestack Ruby SDK
Instance Method Summary collapse
-
#get_url(base, handle: nil, path: nil, security: nil) ⇒ String
Generates the URL for a FilestackFilelink object.
-
#make_call(url, action, parameters: nil, headers: nil) ⇒ Typhoeus::Request
General request function.
-
#send_upload(apikey, filepath: nil, external_url: nil, security: nil, options: nil, storage: 'S3') ⇒ Hash
Uploads to v1 REST API (for external URLs or if multipart is turned off).
Instance Method Details
#get_url(base, handle: nil, path: nil, security: nil) ⇒ String
Generates the URL for a FilestackFilelink object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/filestack/utils/utils.rb', line 110 def get_url(base, handle: nil, path: nil, security: nil) url_components = [base] url_components.push(path) unless path.nil? url_components.push(handle) unless handle.nil? url = url_components.join('/') if security policy = security.policy signature = security.signature security_path = "policy=#{policy}&signature=#{signature}" url = "#{url}?#{security_path}" end url end |
#make_call(url, action, parameters: nil, headers: nil) ⇒ Typhoeus::Request
General request function
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/filestack/utils/utils.rb', line 54 def make_call(url, action, parameters: nil, headers: nil) headers = if headers headers.merge!(FilestackConfig::HEADERS) else FilestackConfig::HEADERS end Typhoeus.public_send( action, url, params: parameters, headers: headers ) end |
#send_upload(apikey, filepath: nil, external_url: nil, security: nil, options: nil, storage: 'S3') ⇒ Hash
Uploads to v1 REST API (for external URLs or if multipart is turned off)
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/filestack/utils/utils.rb', line 77 def send_upload(apikey, filepath: nil, external_url: nil, security: nil, options: nil, storage: 'S3') data = if filepath { fileUpload: File.open(filepath) } else { url: external_url } end # adds any user-defined upload options to request payload data = data.merge!() unless .nil? base = "#{FilestackConfig::API_URL}/store/#{storage}?key=#{apikey}" if security policy = security.policy signature = security.signature base = "#{base}&signature=#{signature}&policy=#{policy}" end response = make_call(base, 'post', parameters: data) if response.code == 200 response_body = JSON.parse(response.body) handle = response_body['url'].split('/').last return { 'handle' => handle } end raise response.body end |