Class: FilestackClient

Inherits:
Object
  • Object
show all
Includes:
MultipartUploadUtils, UploadUtils
Defined in:
lib/filestack/models/filestack_client.rb

Overview

The Filestack FilestackClient class acts as a hub for all Filestack actions that do not require a file handle, including uploading files (both local and external), initiating an external transformation, and other tasks

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from UploadUtils

#get_url, #make_call, #send_upload

Methods included from MultipartUploadUtils

#create_upload_jobs, #get_file_info, #multipart_complete, #multipart_options, #multipart_start, #multipart_upload, #run_uploads, #upload_chunk

Constructor Details

#initialize(apikey, security: nil) ⇒ FilestackClient

Initialize FilestackClient

Parameters:

  • apikey (String)

    Your Filestack API key

  • security (FilestackSecurity)

    A Filestack security object, if security is enabled



21
22
23
24
# File 'lib/filestack/models/filestack_client.rb', line 21

def initialize(apikey, security: nil)
  @apikey = apikey
  @security = security
end

Instance Attribute Details

#apikeyObject (readonly)

Returns the value of attribute apikey



14
15
16
# File 'lib/filestack/models/filestack_client.rb', line 14

def apikey
  @apikey
end

#securityObject (readonly)

Returns the value of attribute security



14
15
16
# File 'lib/filestack/models/filestack_client.rb', line 14

def security
  @security
end

Instance Method Details

#transform_external(external_url) ⇒ Filestack::Transform

Transform an external URL

Parameters:

  • external_url (string)

    A valid URL

Returns:

  • (Filestack::Transform)


57
58
59
# File 'lib/filestack/models/filestack_client.rb', line 57

def transform_external(external_url)
  Transform.new(external_url: external_url, security: @security, apikey: @apikey)
end

#upload(filepath: nil, external_url: nil, multipart: true, options: {}, storage: 's3', intelligent: false, timeout: 60) ⇒ Object

Upload a local file or external url return [Filestack::FilestackFilelink]

Parameters:

  • filepath (String)

    The path of a local file

  • external_url (String)

    An external URL

  • multipart (Bool)

    Switch for miltipart (Default: true)

  • options (Hash)

    User-supplied upload options



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/filestack/models/filestack_client.rb', line 34

def upload(filepath: nil, external_url: nil, multipart: true, options: {}, storage: 's3', intelligent: false, timeout: 60)
  if filepath && external_url
    return 'You cannot upload a URL and file at the same time'
  end
  response = if filepath && multipart
               multipart_upload(@apikey, filepath, @security, options, timeout, storage, intelligent: intelligent)
             else
               send_upload(
                 @apikey,
                 filepath: filepath,
                 external_url: external_url,
                 options: options,
                 security: @security,
                 storage: storage
               )
             end
  FilestackFilelink.new(response['handle'], security: @security, apikey: @apikey)
end

#zip(destination, files) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/filestack/models/filestack_client.rb', line 61

def zip(destination, files)
  encoded_files = JSON.generate(files).gsub('"', '')
  zip_url = "#{FilestackConfig::CDN_URL}/#{@apikey}/zip/#{encoded_files}"
  escaped_zip_url = zip_url.gsub("[","%5B").gsub("]","%5D")
  response = UploadUtils.make_call(escaped_zip_url, 'get')
  File.write(destination, response.body)
end