Class: Files::Folder

Inherits:
Object
  • Object
show all
Defined in:
lib/files.com/models/folder.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Folder

Returns a new instance of Folder.



103
104
105
106
107
# File 'lib/files.com/models/folder.rb', line 103

def initialize(*args)
  @attributes = (args[0].is_a?(Hash) && args[0]) || {}
  @options = (args[1].is_a?(Hash) && args[1]) || {}
  @attributes['path'] = args[0] if args[0].is_a?(String)
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



5
6
7
# File 'lib/files.com/models/folder.rb', line 5

def attributes
  @attributes
end

#optionsObject (readonly)

Returns the value of attribute options.



5
6
7
# File 'lib/files.com/models/folder.rb', line 5

def options
  @options
end

#posObject



127
128
129
# File 'lib/files.com/models/folder.rb', line 127

def pos
  @pos ||= 0
end

Class Method Details

.[](*_) ⇒ Object



7
8
9
# File 'lib/files.com/models/folder.rb', line 7

def self.[](*_)
  raise NotImplementedError
end

.chdir(path, &block) ⇒ Object

Raises:

  • (Errno::ENOENT)


11
12
13
14
15
16
17
18
19
# File 'lib/files.com/models/folder.rb', line 11

def self.chdir(path, &block)
  raise Errno::ENOENT.new(path) if exist? path

  if block
    yield path
  else
    @@path ||= path
  end
end

.children(path, _encoding = "") ⇒ Object



21
22
23
# File 'lib/files.com/models/folder.rb', line 21

def self.children(path, _encoding = "")
  Folder.new(path).contents.map(&:path)
end

.chroot(*args) ⇒ Object



25
# File 'lib/files.com/models/folder.rb', line 25

def self.chroot(*args); end

.create(path, params = {}, options = {}) ⇒ Object

Parameters:

path (required) - string - Path to operate on.
mkdir_parents - boolean - Create parent directories if they do not exist?
provided_mtime - string - User provided modification time.


493
494
495
496
497
498
499
500
501
502
# File 'lib/files.com/models/folder.rb', line 493

def self.create(path, params = {}, options = {})
  params ||= {}
  params[:path] = path
  raise InvalidParameterError.new("Bad parameter: path must be an String") if params[:path] and !params[:path].is_a?(String)
  raise InvalidParameterError.new("Bad parameter: provided_mtime must be an String") if params[:provided_mtime] and !params[:provided_mtime].is_a?(String)
  raise MissingParameterError.new("Parameter missing: path") unless params[:path]

  response, options = Api.send_request("/folders/#{params[:path]}", :post, params, options)
  File.new(response.data, options)
end

.delete(path, params = {}, options = {}) ⇒ Object



27
28
29
# File 'lib/files.com/models/folder.rb', line 27

def self.delete(path, params = {}, options = {})
  File.delete(path, params, options)
end

.destroy(path, params = {}, options = {}) ⇒ Object



31
32
33
# File 'lib/files.com/models/folder.rb', line 31

def self.destroy(path, params = {}, options = {})
  File.destroy(path, params, options)
end

.each_child(path, _encoding = "", &block) ⇒ Object



35
36
37
# File 'lib/files.com/models/folder.rb', line 35

def self.each_child(path, _encoding = "", &block)
  Folder.new(path).each(&block)
end

.empty?(*_args) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/files.com/models/folder.rb', line 39

def self.empty?(*_args)
  Folder.new(path).contents.empty?
end

.entries(path) ⇒ Object



43
44
45
# File 'lib/files.com/models/folder.rb', line 43

def self.entries(path)
  list(path)
end

.exist?(*args) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/files.com/models/folder.rb', line 47

def self.exist?(*args)
  File.exist?(*args)
end

.find(path, params = {}, options = {}) ⇒ Object



51
52
53
# File 'lib/files.com/models/folder.rb', line 51

def self.find(path, params = {}, options = {})
  File.find(path, params, options)
end

.foreach(path, _encoding = "", params = {}, options = {}, &block) ⇒ Object



59
60
61
# File 'lib/files.com/models/folder.rb', line 59

def self.foreach(path, _encoding = "", params = {}, options = {}, &block)
  list_for(path, params, options).each { |x| block.call(x) }
end

.get(path, params = {}, options = {}) ⇒ Object



55
56
57
# File 'lib/files.com/models/folder.rb', line 55

def self.get(path, params = {}, options = {})
  File.get(path, params, options)
end

.getwd(*_args) ⇒ Object



63
64
65
# File 'lib/files.com/models/folder.rb', line 63

def self.getwd(*_args)
  pwd
end

.glob(*_) ⇒ Object



67
68
69
# File 'lib/files.com/models/folder.rb', line 67

def self.glob(*_)
  raise NotImplementedError
end

.home(*_args) ⇒ Object



71
72
73
# File 'lib/files.com/models/folder.rb', line 71

def self.home(*_args)
  ""
end

.list_for(path, params = {}, options = {}) ⇒ Object

Parameters:

cursor - string - Send cursor to resume an existing list from the point at which you left off.  Get a cursor from an existing list via the X-Files-Cursor-Next header or the X-Files-Cursor-Prev header.
per_page - int64 - Number of records to show per page.  (Max: 10,000, 1,000 or less is recommended).
path (required) - string - Path to operate on.
filter - string - If specified, will filter folders/files list by name. Ignores text before last `/`. Wildcards of `*` and `?` are acceptable here.
preview_size - string - Request a preview size.  Can be `small` (default), `large`, `xlarge`, or `pdf`.
sort_by - object - Search by field and direction. Valid fields are `path`, `size`, `modified_at_datetime`, `provided_modified_at`.  Valid directions are `asc` and `desc`.  Defaults to `{"path":"asc"}`.
search - string - If `search_all` is `true`, provide the search string here.  Otherwise, this parameter acts like an alias of `filter`.
search_all - boolean - Search entire site?  If set, we will ignore the folder path provided and search the entire site.  This is the same API used by the search bar in the UI.  Search results are a best effort, not real time, and not guaranteed to match every file.  This field should only be used for ad-hoc (human) searching, and not as part of an automated process.
with_previews - boolean - Include file previews?
with_priority_color - boolean - Include file priority color information?


472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
# File 'lib/files.com/models/folder.rb', line 472

def self.list_for(path, params = {}, options = {})
  params ||= {}
  params[:path] = path
  raise InvalidParameterError.new("Bad parameter: cursor must be an String") if params[:cursor] and !params[:cursor].is_a?(String)
  raise InvalidParameterError.new("Bad parameter: per_page must be an Integer") if params[:per_page] and !params[:per_page].is_a?(Integer)
  raise InvalidParameterError.new("Bad parameter: path must be an String") if params[:path] and !params[:path].is_a?(String)
  raise InvalidParameterError.new("Bad parameter: filter must be an String") if params[:filter] and !params[:filter].is_a?(String)
  raise InvalidParameterError.new("Bad parameter: preview_size must be an String") if params[:preview_size] and !params[:preview_size].is_a?(String)
  raise InvalidParameterError.new("Bad parameter: sort_by must be an Hash") if params[:sort_by] and !params[:sort_by].is_a?(Hash)
  raise InvalidParameterError.new("Bad parameter: search must be an String") if params[:search] and !params[:search].is_a?(String)
  raise MissingParameterError.new("Parameter missing: path") unless params[:path]

  List.new(File, params) do
    Api.send_request("/folders/#{params[:path]}", :get, params, options)
  end
end

.mkdir(path, params = {}, options = {}) ⇒ Object



75
76
77
# File 'lib/files.com/models/folder.rb', line 75

def self.mkdir(path, params = {}, options = {})
  create(path, params, options)
end

.open(*args, &block) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/files.com/models/folder.rb', line 79

def self.open(*args, &block)
  if block.nil?
    new *args
  else
    yield new *args
  end
end

.pwd(*_args) ⇒ Object



87
88
89
# File 'lib/files.com/models/folder.rb', line 87

def self.pwd(*_args)
  @@path ||= ""
end

.rmdir(path) ⇒ Object



91
92
93
# File 'lib/files.com/models/folder.rb', line 91

def self.rmdir(path)
  delete(path)
end


95
96
97
# File 'lib/files.com/models/folder.rb', line 95

def self.unlink(path)
  delete(path)
end

.update(path, params = {}, options = {}) ⇒ Object



99
100
101
# File 'lib/files.com/models/folder.rb', line 99

def self.update(path, params = {}, options = {})
  File.update(path, params, options)
end

Instance Method Details

#close(*args) ⇒ Object



109
# File 'lib/files.com/models/folder.rb', line 109

def close(*args); end

#contentsObject



119
120
121
# File 'lib/files.com/models/folder.rb', line 119

def contents
  @contents ||= Folder.list(path, {}, @options)
end

#crc32Object

string - File CRC32 checksum. This is sometimes delayed, so if you get a blank response, wait and try again.



348
349
350
# File 'lib/files.com/models/folder.rb', line 348

def crc32
  @attributes[:crc32]
end

#crc32=(value) ⇒ Object



352
353
354
# File 'lib/files.com/models/folder.rb', line 352

def crc32=(value)
  @attributes[:crc32] = value
end

#created_atObject

date-time - File created date/time



271
272
273
# File 'lib/files.com/models/folder.rb', line 271

def created_at
  @attributes[:created_at]
end

#created_by_api_key_idObject

int64 - ID of the API key that created the file/folder



172
173
174
# File 'lib/files.com/models/folder.rb', line 172

def created_by_api_key_id
  @attributes[:created_by_api_key_id]
end

#created_by_api_key_id=(value) ⇒ Object



176
177
178
# File 'lib/files.com/models/folder.rb', line 176

def created_by_api_key_id=(value)
  @attributes[:created_by_api_key_id] = value
end

#created_by_as2_incoming_message_idObject

int64 - ID of the AS2 Incoming Message that created the file/folder



181
182
183
# File 'lib/files.com/models/folder.rb', line 181

def created_by_as2_incoming_message_id
  @attributes[:created_by_as2_incoming_message_id]
end

#created_by_as2_incoming_message_id=(value) ⇒ Object



185
186
187
# File 'lib/files.com/models/folder.rb', line 185

def created_by_as2_incoming_message_id=(value)
  @attributes[:created_by_as2_incoming_message_id] = value
end

#created_by_automation_idObject

int64 - ID of the Automation that created the file/folder



190
191
192
# File 'lib/files.com/models/folder.rb', line 190

def created_by_automation_id
  @attributes[:created_by_automation_id]
end

#created_by_automation_id=(value) ⇒ Object



194
195
196
# File 'lib/files.com/models/folder.rb', line 194

def created_by_automation_id=(value)
  @attributes[:created_by_automation_id] = value
end

#created_by_bundle_registration_idObject

int64 - ID of the Bundle Registration that created the file/folder



199
200
201
# File 'lib/files.com/models/folder.rb', line 199

def created_by_bundle_registration_id
  @attributes[:created_by_bundle_registration_id]
end

#created_by_bundle_registration_id=(value) ⇒ Object



203
204
205
# File 'lib/files.com/models/folder.rb', line 203

def created_by_bundle_registration_id=(value)
  @attributes[:created_by_bundle_registration_id] = value
end

#created_by_idObject

int64 - User ID of the User who created the file/folder



163
164
165
# File 'lib/files.com/models/folder.rb', line 163

def created_by_id
  @attributes[:created_by_id]
end

#created_by_id=(value) ⇒ Object



167
168
169
# File 'lib/files.com/models/folder.rb', line 167

def created_by_id=(value)
  @attributes[:created_by_id] = value
end

#created_by_inbox_idObject

int64 - ID of the Inbox that created the file/folder



208
209
210
# File 'lib/files.com/models/folder.rb', line 208

def created_by_inbox_id
  @attributes[:created_by_inbox_id]
end

#created_by_inbox_id=(value) ⇒ Object



212
213
214
# File 'lib/files.com/models/folder.rb', line 212

def created_by_inbox_id=(value)
  @attributes[:created_by_inbox_id] = value
end

#created_by_remote_server_idObject

int64 - ID of the Remote Server that created the file/folder



217
218
219
# File 'lib/files.com/models/folder.rb', line 217

def created_by_remote_server_id
  @attributes[:created_by_remote_server_id]
end

#created_by_remote_server_id=(value) ⇒ Object



221
222
223
# File 'lib/files.com/models/folder.rb', line 221

def created_by_remote_server_id=(value)
  @attributes[:created_by_remote_server_id] = value
end

#created_by_remote_server_sync_idObject

int64 - ID of the Remote Server Sync that created the file/folder



226
227
228
# File 'lib/files.com/models/folder.rb', line 226

def created_by_remote_server_sync_id
  @attributes[:created_by_remote_server_sync_id]
end

#created_by_remote_server_sync_id=(value) ⇒ Object



230
231
232
# File 'lib/files.com/models/folder.rb', line 230

def created_by_remote_server_sync_id=(value)
  @attributes[:created_by_remote_server_sync_id] = value
end

#custom_metadataObject

object - Custom metadata map of keys and values. Limited to 32 keys, 256 characters per key and 1024 characters per value.



235
236
237
# File 'lib/files.com/models/folder.rb', line 235

def 
  @attributes[:custom_metadata]
end

#custom_metadata=(value) ⇒ Object



239
240
241
# File 'lib/files.com/models/folder.rb', line 239

def custom_metadata=(value)
  @attributes[:custom_metadata] = value
end

#display_nameObject

string - File/Folder display name



244
245
246
# File 'lib/files.com/models/folder.rb', line 244

def display_name
  @attributes[:display_name]
end

#display_name=(value) ⇒ Object



248
249
250
# File 'lib/files.com/models/folder.rb', line 248

def display_name=(value)
  @attributes[:display_name] = value
end

#download_uriObject

string - Link to download file. Provided only in response to a download request.



411
412
413
# File 'lib/files.com/models/folder.rb', line 411

def download_uri
  @attributes[:download_uri]
end

#download_uri=(value) ⇒ Object



415
416
417
# File 'lib/files.com/models/folder.rb', line 415

def download_uri=(value)
  @attributes[:download_uri] = value
end

#each(&block) ⇒ Object



111
112
113
# File 'lib/files.com/models/folder.rb', line 111

def each(&block)
  contents.each { |x| block.call(x) }
end

#filenoObject



115
116
117
# File 'lib/files.com/models/folder.rb', line 115

def fileno
  stats.id
end

#is_lockedObject

boolean - Is this folder locked and unable to be modified?



402
403
404
# File 'lib/files.com/models/folder.rb', line 402

def is_locked
  @attributes[:is_locked]
end

#is_locked=(value) ⇒ Object



406
407
408
# File 'lib/files.com/models/folder.rb', line 406

def is_locked=(value)
  @attributes[:is_locked] = value
end

#last_modified_by_api_key_idObject

int64 - ID of the API key that last modified the file/folder



285
286
287
# File 'lib/files.com/models/folder.rb', line 285

def last_modified_by_api_key_id
  @attributes[:last_modified_by_api_key_id]
end

#last_modified_by_api_key_id=(value) ⇒ Object



289
290
291
# File 'lib/files.com/models/folder.rb', line 289

def last_modified_by_api_key_id=(value)
  @attributes[:last_modified_by_api_key_id] = value
end

#last_modified_by_automation_idObject

int64 - ID of the Automation that last modified the file/folder



294
295
296
# File 'lib/files.com/models/folder.rb', line 294

def last_modified_by_automation_id
  @attributes[:last_modified_by_automation_id]
end

#last_modified_by_automation_id=(value) ⇒ Object



298
299
300
# File 'lib/files.com/models/folder.rb', line 298

def last_modified_by_automation_id=(value)
  @attributes[:last_modified_by_automation_id] = value
end

#last_modified_by_bundle_registration_idObject

int64 - ID of the Bundle Registration that last modified the file/folder



303
304
305
# File 'lib/files.com/models/folder.rb', line 303

def last_modified_by_bundle_registration_id
  @attributes[:last_modified_by_bundle_registration_id]
end

#last_modified_by_bundle_registration_id=(value) ⇒ Object



307
308
309
# File 'lib/files.com/models/folder.rb', line 307

def last_modified_by_bundle_registration_id=(value)
  @attributes[:last_modified_by_bundle_registration_id] = value
end

#last_modified_by_idObject

int64 - User ID of the User who last modified the file/folder



276
277
278
# File 'lib/files.com/models/folder.rb', line 276

def last_modified_by_id
  @attributes[:last_modified_by_id]
end

#last_modified_by_id=(value) ⇒ Object



280
281
282
# File 'lib/files.com/models/folder.rb', line 280

def last_modified_by_id=(value)
  @attributes[:last_modified_by_id] = value
end

#last_modified_by_remote_server_idObject

int64 - ID of the Remote Server that last modified the file/folder



312
313
314
# File 'lib/files.com/models/folder.rb', line 312

def last_modified_by_remote_server_id
  @attributes[:last_modified_by_remote_server_id]
end

#last_modified_by_remote_server_id=(value) ⇒ Object



316
317
318
# File 'lib/files.com/models/folder.rb', line 316

def last_modified_by_remote_server_id=(value)
  @attributes[:last_modified_by_remote_server_id] = value
end

#last_modified_by_remote_server_sync_idObject

int64 - ID of the Remote Server Sync that last modified the file/folder



321
322
323
# File 'lib/files.com/models/folder.rb', line 321

def last_modified_by_remote_server_sync_id
  @attributes[:last_modified_by_remote_server_sync_id]
end

#last_modified_by_remote_server_sync_id=(value) ⇒ Object



325
326
327
# File 'lib/files.com/models/folder.rb', line 325

def last_modified_by_remote_server_sync_id=(value)
  @attributes[:last_modified_by_remote_server_sync_id] = value
end

#md5Object

string - File MD5 checksum. This is sometimes delayed, so if you get a blank response, wait and try again.



357
358
359
# File 'lib/files.com/models/folder.rb', line 357

def md5
  @attributes[:md5]
end

#md5=(value) ⇒ Object



361
362
363
# File 'lib/files.com/models/folder.rb', line 361

def md5=(value)
  @attributes[:md5] = value
end

#mime_typeObject

string - MIME Type. This is determined by the filename extension and is not stored separately internally.



366
367
368
# File 'lib/files.com/models/folder.rb', line 366

def mime_type
  @attributes[:mime_type]
end

#mime_type=(value) ⇒ Object



370
371
372
# File 'lib/files.com/models/folder.rb', line 370

def mime_type=(value)
  @attributes[:mime_type] = value
end

#mkdir_parentsObject

boolean - Create parent directories if they do not exist?



447
448
449
# File 'lib/files.com/models/folder.rb', line 447

def mkdir_parents
  @attributes[:mkdir_parents]
end

#mkdir_parents=(value) ⇒ Object



451
452
453
# File 'lib/files.com/models/folder.rb', line 451

def mkdir_parents=(value)
  @attributes[:mkdir_parents] = value
end

#mtimeObject

date-time - File last modified date/time, according to the server. This is the timestamp of the last Files.com operation of the file, regardless of what modified timestamp was sent.



330
331
332
# File 'lib/files.com/models/folder.rb', line 330

def mtime
  @attributes[:mtime]
end

#mtime=(value) ⇒ Object



334
335
336
# File 'lib/files.com/models/folder.rb', line 334

def mtime=(value)
  @attributes[:mtime] = value
end

#pathObject

string - File/Folder path This must be slash-delimited, but it must neither start nor end with a slash. Maximum of 5000 characters.



154
155
156
# File 'lib/files.com/models/folder.rb', line 154

def path
  @attributes[:path]
end

#path=(value) ⇒ Object



158
159
160
# File 'lib/files.com/models/folder.rb', line 158

def path=(value)
  @attributes[:path] = value
end

#permissionsObject

string - A short string representing the current user’s permissions. Can be ‘r` (Read),`w` (Write),`d` (Delete), `l` (List) or any combination



384
385
386
# File 'lib/files.com/models/folder.rb', line 384

def permissions
  @attributes[:permissions]
end

#permissions=(value) ⇒ Object



388
389
390
# File 'lib/files.com/models/folder.rb', line 388

def permissions=(value)
  @attributes[:permissions] = value
end

#previewObject

Preview - File preview



438
439
440
# File 'lib/files.com/models/folder.rb', line 438

def preview
  @attributes[:preview]
end

#preview=(value) ⇒ Object



442
443
444
# File 'lib/files.com/models/folder.rb', line 442

def preview=(value)
  @attributes[:preview] = value
end

#preview_idObject

int64 - File preview ID



429
430
431
# File 'lib/files.com/models/folder.rb', line 429

def preview_id
  @attributes[:preview_id]
end

#preview_id=(value) ⇒ Object



433
434
435
# File 'lib/files.com/models/folder.rb', line 433

def preview_id=(value)
  @attributes[:preview_id] = value
end

#priority_colorObject

string - Bookmark/priority color of file/folder



420
421
422
# File 'lib/files.com/models/folder.rb', line 420

def priority_color
  @attributes[:priority_color]
end

#priority_color=(value) ⇒ Object



424
425
426
# File 'lib/files.com/models/folder.rb', line 424

def priority_color=(value)
  @attributes[:priority_color] = value
end

#provided_mtimeObject

date-time - File last modified date/time, according to the client who set it. Files.com allows desktop, FTP, SFTP, and WebDAV clients to set modified at times. This allows Desktop<->Cloud syncing to preserve modified at times.



339
340
341
# File 'lib/files.com/models/folder.rb', line 339

def provided_mtime
  @attributes[:provided_mtime]
end

#provided_mtime=(value) ⇒ Object



343
344
345
# File 'lib/files.com/models/folder.rb', line 343

def provided_mtime=(value)
  @attributes[:provided_mtime] = value
end

#read(*_args) ⇒ Object



133
134
135
# File 'lib/files.com/models/folder.rb', line 133

def read(*_args)
  contents[@pos]
end

#regionObject

string - Region location



375
376
377
# File 'lib/files.com/models/folder.rb', line 375

def region
  @attributes[:region]
end

#region=(value) ⇒ Object



379
380
381
# File 'lib/files.com/models/folder.rb', line 379

def region=(value)
  @attributes[:region] = value
end

#rewindObject



137
138
139
# File 'lib/files.com/models/folder.rb', line 137

def rewind
  @pos = 0
end

#saveObject



455
456
457
458
459
# File 'lib/files.com/models/folder.rb', line 455

def save
  new_obj = Folder.create(path, @attributes, @options)
  @attributes = new_obj.attributes
  true
end

#seek(pos) ⇒ Object



141
142
143
# File 'lib/files.com/models/folder.rb', line 141

def seek(pos)
  @pos = pos
end

#sizeObject

int64 - File/Folder size



262
263
264
# File 'lib/files.com/models/folder.rb', line 262

def size
  @attributes[:size]
end

#size=(value) ⇒ Object



266
267
268
# File 'lib/files.com/models/folder.rb', line 266

def size=(value)
  @attributes[:size] = value
end

#statsObject



123
124
125
# File 'lib/files.com/models/folder.rb', line 123

def stats
  @stats ||= File.download(@filename, { action: 'stat' }, @options)
end

#subfolders_locked=(value) ⇒ Object



397
398
399
# File 'lib/files.com/models/folder.rb', line 397

def subfolders_locked=(value)
  @attributes[:subfolders_locked?] = value
end

#subfolders_locked?Boolean

boolean - Are subfolders locked and unable to be modified?

Returns:

  • (Boolean)


393
394
395
# File 'lib/files.com/models/folder.rb', line 393

def subfolders_locked?
  @attributes[:subfolders_locked?]
end

#tellObject



145
146
147
# File 'lib/files.com/models/folder.rb', line 145

def tell
  @pos
end

#to_pathObject



149
150
151
# File 'lib/files.com/models/folder.rb', line 149

def to_path
  path
end

#typeObject

string - Type: ‘directory` or `file`.



253
254
255
# File 'lib/files.com/models/folder.rb', line 253

def type
  @attributes[:type]
end

#type=(value) ⇒ Object



257
258
259
# File 'lib/files.com/models/folder.rb', line 257

def type=(value)
  @attributes[:type] = value
end