Module: FilestackCommon

Includes:
UploadUtils
Included in:
FilestackFilelink
Defined in:
lib/filestack/mixins/filestack_common.rb

Overview

Module is mixin for common functionalities that all Filestack objects can call.

Instance Method Summary collapse

Methods included from UploadUtils

#get_url, #make_call, #send_upload

Instance Method Details

#send_delete(handle, apikey, security) ⇒ Typhoeus::Response

Send the delete api request to delete a filelink

Parameters:

  • url (String)

    The url of the Filehandle to be deleted (includes security)

Returns:

  • (Typhoeus::Response)


38
39
40
41
42
43
44
45
46
47
# File 'lib/filestack/mixins/filestack_common.rb', line 38

def send_delete(handle, apikey, security)
  return 'Delete requires security' if security.nil?
  signature = security.signature
  policy = security.policy
  base = "#{FilestackConfig::API_URL}/file"
  UploadUtils.make_call(
    "#{base}/#{handle}?key=#{apikey}&signature=#{signature}&policy=#{policy}",
    'delete'
  )
end

#send_download(url, filepath) ⇒ Int

Get the content of a filehandle

Parameters:

  • filepath (String)

    Local path of file to be written

Returns:

  • (Int)

    Size of file written



27
28
29
30
# File 'lib/filestack/mixins/filestack_common.rb', line 27

def send_download(url, filepath)
  content = send_get_content(url)
  File.write(filepath, content.body)
end

#send_get_content(url, parameters: nil) ⇒ Bytes

Get the contents of a Filestack handle

Parameters:

  • file_handle (String)

    The Filelink handle

  • security (FilestackSecurity)

    Optional Filestack security object if security is enabled

Returns:

  • (Bytes)


18
19
20
# File 'lib/filestack/mixins/filestack_common.rb', line 18

def send_get_content(url, parameters: nil)
  UploadUtils.make_call(url, 'get', parameters: parameters)
end

#send_metadata(handle, security = nil, params) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/filestack/mixins/filestack_common.rb', line 96

def (handle, security = nil, params)
  if security
    policy = security.policy
    signature = security.signature
    url = "#{FilestackConfig::CDN_URL}/#{handle}/metadata?signature=#{signature}&policy=#{policy}"
  else
    url = "#{FilestackConfig::CDN_URL}/#{handle}/metadata"
  end
  response = UploadUtils.make_call(url, 'get', parameters: params)

  if response.code == 200
    return JSON.parse(response.body)
  end
  raise response.body
end

#send_overwrite(filepath, handle, apikey, security) ⇒ Typhoeus::Response

Send the overwrite api request to update a filelink

Parameters:

  • filepath (String)

    Filepath of file to upload

  • handle (String)

    The Filelink handle

  • apikey (String)

    Filestack API Key

  • security (FilestackSecurity)

    Filestack security object

Returns:

  • (Typhoeus::Response)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/filestack/mixins/filestack_common.rb', line 57

def send_overwrite(filepath, handle, apikey, security)
  return 'Overwrite requires security' if security.nil?

  file = File.open(filepath, 'r')
  mimetype = MimeMagic.by_magic(file)
  content = file.read

  signature = security.signature
  policy = security.policy

  headers = { 'Content-Type' => mimetype }
  base = "#{FilestackConfig::API_URL}/file"

  UploadUtils.make_call(
    "#{base}/#{handle}?key=#{apikey}&signature=#{signature}&policy=#{policy}",
    'put',
    headers: headers,
    parameters: content
  )
end

#send_tags(task, handle, security) ⇒ Hash

Get tags or sfw content from a filelink

Parameters:

  • task (String)

    ‘tags’ or ‘sfw’

  • handle (String)

    The filehandle

  • security (Filestack::Security)

    Security object

Returns:



85
86
87
88
89
90
91
92
93
94
# File 'lib/filestack/mixins/filestack_common.rb', line 85

def send_tags(task, handle, security)
  raise 'You must use security for tags' if security.nil?

  policy = security.policy
  signature = security.signature
  url = "#{FilestackConfig::CDN_URL}/#{task}/"\
    "security=signature:#{signature},policy:#{policy}/#{handle}"
  response = UploadUtils.make_call(url, 'get')
  JSON.parse(response.body)[task]
end