class Egnyte::Folder

Public Class Methods

create(session, path) click to toggle source
# File lib/egnyte/folder.rb, line 24
def self.create(session, path)
  path = Egnyte::Helper.normalize_path(path)
  session.post("#{Egnyte::Item.fs_path(session)}#{path}", JSON.dump({
    action: 'add_folder'
  }))

  Folder.new({
    'path' => path,
    'folders' => [],
    'is_folder' => true,
    'name' => path.split('/').pop
  }, session)
end
delete(session, path) click to toggle source
# File lib/egnyte/folder.rb, line 42
def self.delete(session, path)      
  session.delete("#{Egnyte::Item.fs_path(session)}/#{path}")
end
find(session, path) click to toggle source
# File lib/egnyte/folder.rb, line 69
def self.find(session, path)
  path = Egnyte::Helper.normalize_path(path)

  folder = Folder.new({
    'path' => path
  }, session)
  
  parsed_body = session.get("#{folder.fs_path}#{path}")

  raise FolderExpected unless parsed_body['is_folder']

  folder.update_data(parsed_body)
end

Public Instance Methods

apply_permissions(permission_object) click to toggle source
# File lib/egnyte/folder.rb, line 95
def apply_permissions(permission_object)
  Egnyte::Permission.apply(@session, permission_object, @data['path'])
end
create(path) click to toggle source
# File lib/egnyte/folder.rb, line 18
def create(path)
  path = Egnyte::Helper.normalize_path(path)
  new_folder_path = "#{self.path}/#{path}"
  Egnyte::Folder.create(@session, new_folder_path)
end
delete() click to toggle source
# File lib/egnyte/folder.rb, line 38
def delete
  Egnyte::Folder.delete(@session, path)
end
explicit_permissions(params=nil) click to toggle source
# File lib/egnyte/folder.rb, line 91
def explicit_permissions(params=nil)
  Egnyte::Permission.explicit_permissions(@session, @data['path'])
end
files() click to toggle source
# File lib/egnyte/folder.rb, line 61
def files
  create_objects(File, 'files')
end
folders() click to toggle source
# File lib/egnyte/folder.rb, line 65
def folders
  create_objects(Folder, 'folders')
end
inherited_permissions(params=nil) click to toggle source
# File lib/egnyte/folder.rb, line 87
def inherited_permissions(params=nil)
  Egnyte::Permission.inherited_permissions(@session, @data['path'])
end
permissions(params=nil) click to toggle source
# File lib/egnyte/folder.rb, line 83
def permissions(params=nil)
  Egnyte::Permission.folder_permissions(@session, @data['path'])
end
upload(filename, content) click to toggle source
# File lib/egnyte/folder.rb, line 46
def upload(filename, content)
  resp = @session.multipart_post("#{fs_path('fs-content')}#{path}/#{filename}", filename, content, false)

  content.rewind # to calculate size, rewind content stream.

  File.new({
    'is_folder' => false,
    'entry_id' => resp['ETag'],
    'checksum' => resp['X-Sha512-Checksum'],
    'last_modified' => resp['Last-Modified'],
    'name' => filename,
    'size' => content.size
  }, @session)
end

Private Instance Methods

create_objects(klass, key) click to toggle source
# File lib/egnyte/folder.rb, line 101
def create_objects(klass, key)
  return [] unless @data[key]
  @data[key].map do |data|
    data = data.merge({
      'path' => "#{path}/#{data['name']}"
    })
    klass.new(data, @session)
  end
end