class GroupDocs::Storage::Folder

Attributes

access[RW]

@attr [Symbol] access

created_on[RW]

@attr [Time] created_on

file_count[RW]

@attr [Integer] file_count

folder_count[RW]

@attr [Integer] folder_count

id[RW]

@attr [Integer] id

modified_on[RW]

@attr [Time] modified_on

name[RW]

@attr [String] name

path[RW]

@attr [String] path

size[RW]

@attr [Integer] size

type[RW]

@attr [Integer] type

url[RW]

@attr [String] url

version[RW]

@attr [Integer] version

Public Class Methods

create!(path, access = {}) click to toggle source

Creates folder on server.

@param [String] path Path of folder to create starting with “/” @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [GroupDocs::Storage::Folder] Created folder

# File lib/groupdocs/storage/folder.rb, line 17
def self.create!(path, access = {})
  path = prepare_path(path)

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/storage/{{client_id}}/paths/#{path}"
  end.execute!

  Storage::Folder.new(json)
end
list!(path = '', options = {}, access = {}) click to toggle source

Returns a list of all directories and files in the path.

@param [String] path Path of directory to list starting from root (‘/’) @param [Hash] options Hash of options @option options [Integer] :page Page to start with @option options [Integer] :count How many items to list @option options [String] :order_by Field name to sort by @option options [Boolean] :order_asc Set to true to return in ascending order @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Storage::Folder, GroupDocs::Storage::File>]

# File lib/groupdocs/storage/folder.rb, line 43
def self.list!(path = '', options = {}, access = {})
  path = prepare_path(path)
  new(:path => path).list!(options, access)
end

Public Instance Methods

copy!(destination, access = {}) click to toggle source

Copies folder contents to given path.

@param [String] destination_path Destination to copy contents to @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [String] Copied to folder path

# File lib/groupdocs/storage/folder.rb, line 175
def copy!(destination, access = {})
  src_path = prepare_path(path)
  dst_path = prepare_path("#{destination}/#{name}")

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:headers] = { :'Groupdocs-Copy' => src_path }
    request[:path] = "/storage/{{client_id}}/folders/#{dst_path}"
  end.execute!

  dst_path
end
create!(access = {}) click to toggle source

Creates folder on server.

Note that it doesn’t update self and instead returns new instance.

@example

folder = GroupDocs::Storage::Folder.new(name: 'Folder')
folder = folder.create!

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [GroupDocs::Storage::Folder] Created folder

# File lib/groupdocs/storage/folder.rb, line 203
def create!(access = {})
  self.class.create! prepare_path("#{path}/#{name}"), access
end
delete!(access = {}) click to toggle source

Deletes folder from server.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key

# File lib/groupdocs/storage/folder.rb, line 214
def delete!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/storage/{{client_id}}/folders/#{prepare_path("#{path}/#{name}")}"
  end.execute!
end
list!(options = {}, access = {}) click to toggle source

Returns an array of files and folders.

@param [Hash] options Hash of options @option options [Integer] :page Page to start with @option options [Integer] :count How many items to list @option options [String] :order_by Field name to sort by @option options [Boolean] :order_asc Set to true to return in ascending order @option options [String] :filter Filter by name @option options [Array<Symbol>] :file_types Array of file types to return @option options [Boolean] :extended Set to true to return extended information @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Storage::Folder, GroupDocs::Storage::File>]

# File lib/groupdocs/storage/folder.rb, line 116
def list!(options = {}, access = {})
  if options[:order_by]
    options[:order_by] = options[:order_by].camelize
  end

  full_path = prepare_path("#{path}/#{name}")

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/storage/{{client_id}}/folders/#{full_path}"
  end
  api.add_params(options)
  json = api.execute!

  folders = json[:folders].map do |folder|
    folder.merge!(:path => full_path)
    Storage::Folder.new(folder)
  end
  files = json[:files].map do |file|
    file.merge!(:path => full_path)
    Storage::File.new(file)
  end

  folders + files
end
move!(destination, access = {}) click to toggle source

Moves folder contents to given path.

@param [String] destination Destination to move contents to @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [String] Moved to folder path

# File lib/groupdocs/storage/folder.rb, line 152
def move!(destination, access = {})
  src_path = prepare_path(path)
  dst_path = prepare_path("#{destination}/#{name}")

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:headers] = { :'Groupdocs-Move' => src_path }
    request[:path] = "/storage/{{client_id}}/folders/#{dst_path}"
  end.execute!

  dst_path
end
sharers!(access = {}) click to toggle source

Returns an array of users a folder is shared with.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::User>]

# File lib/groupdocs/storage/folder.rb, line 230
def sharers!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
  end.execute!

  json[:shared_users].map do |user|
    User.new(user)
  end
end
sharers_clear!(access = {}) click to toggle source

Clears sharers list.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return nil

# File lib/groupdocs/storage/folder.rb, line 278
def sharers_clear!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
  end.execute![:shared_users]
end
sharers_set!(emails, access = {}) click to toggle source

Sets folder sharers to given emails.

If empty array or nil passed, clears sharers.

@param [Array] emails List of email addresses to share with @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::User>]

# File lib/groupdocs/storage/folder.rb, line 253
def sharers_set!(emails, access = {})
  if emails.nil? || emails.empty?
    sharers_clear!(access)
  else
    json = Api::Request.new do |request|
      request[:access] = access
      request[:method] = :PUT
      request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
      request[:request_body] = emails
    end.execute!

    json[:shared_users].map do |user|
      User.new(user)
    end
  end
end