files.com 1.0.92

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTORS +4 -0
  3. data/Gemfile +12 -0
  4. data/Gemfile.lock +82 -0
  5. data/LICENSE +21 -0
  6. data/README.md +119 -0
  7. data/Rakefile +12 -0
  8. data/SECURITY.md +24 -0
  9. data/_VERSION +1 -0
  10. data/bin/files +8 -0
  11. data/bin/files-console +16 -0
  12. data/docs/account_line_item.md +41 -0
  13. data/docs/action.md +37 -0
  14. data/docs/api_key.md +202 -0
  15. data/docs/app.md +59 -0
  16. data/docs/as2_key.md +133 -0
  17. data/docs/auto.md +11 -0
  18. data/docs/automation.md +190 -0
  19. data/docs/behavior.md +208 -0
  20. data/docs/bundle.md +252 -0
  21. data/docs/bundle_download.md +35 -0
  22. data/docs/clickwrap.md +143 -0
  23. data/docs/dns_record.md +35 -0
  24. data/docs/errors.md +17 -0
  25. data/docs/file.md +204 -0
  26. data/docs/file_action.md +126 -0
  27. data/docs/file_comment.md +116 -0
  28. data/docs/file_comment_reaction.md +62 -0
  29. data/docs/file_part_upload.md +37 -0
  30. data/docs/file_utils.md +4 -0
  31. data/docs/folder.md +90 -0
  32. data/docs/group.md +153 -0
  33. data/docs/group_user.md +124 -0
  34. data/docs/history.md +171 -0
  35. data/docs/history_export.md +174 -0
  36. data/docs/image.md +13 -0
  37. data/docs/invoice.md +72 -0
  38. data/docs/invoice_line_item.md +27 -0
  39. data/docs/ip_address.md +55 -0
  40. data/docs/lock.md +98 -0
  41. data/docs/message.md +147 -0
  42. data/docs/message_comment.md +132 -0
  43. data/docs/message_comment_reaction.md +94 -0
  44. data/docs/message_reaction.md +94 -0
  45. data/docs/notification.md +177 -0
  46. data/docs/payment.md +72 -0
  47. data/docs/payment_line_item.md +19 -0
  48. data/docs/permission.md +95 -0
  49. data/docs/preview.md +19 -0
  50. data/docs/project.md +121 -0
  51. data/docs/public_ip_address.md +13 -0
  52. data/docs/public_key.md +133 -0
  53. data/docs/remote_server.md +356 -0
  54. data/docs/request.md +100 -0
  55. data/docs/session.md +78 -0
  56. data/docs/site.md +448 -0
  57. data/docs/sso_strategy.md +114 -0
  58. data/docs/status.md +21 -0
  59. data/docs/style.md +93 -0
  60. data/docs/usage_daily_snapshot.md +45 -0
  61. data/docs/usage_snapshot.md +53 -0
  62. data/docs/user.md +535 -0
  63. data/docs/user_cipher_use.md +41 -0
  64. data/docs/user_request.md +93 -0
  65. data/files.com.gemspec +22 -0
  66. data/lib/files.com.rb +184 -0
  67. data/lib/files.com/api.rb +38 -0
  68. data/lib/files.com/api_client.rb +340 -0
  69. data/lib/files.com/errors.rb +41 -0
  70. data/lib/files.com/list.rb +95 -0
  71. data/lib/files.com/models/account_line_item.rb +82 -0
  72. data/lib/files.com/models/action.rb +77 -0
  73. data/lib/files.com/models/api_key.rb +270 -0
  74. data/lib/files.com/models/app.rb +106 -0
  75. data/lib/files.com/models/as2_key.rb +179 -0
  76. data/lib/files.com/models/auto.rb +17 -0
  77. data/lib/files.com/models/automation.rb +304 -0
  78. data/lib/files.com/models/behavior.rb +266 -0
  79. data/lib/files.com/models/bundle.rb +371 -0
  80. data/lib/files.com/models/bundle_download.rb +49 -0
  81. data/lib/files.com/models/clickwrap.rb +197 -0
  82. data/lib/files.com/models/dir.rb +3 -0
  83. data/lib/files.com/models/dns_record.rb +51 -0
  84. data/lib/files.com/models/errors.rb +22 -0
  85. data/lib/files.com/models/file.rb +968 -0
  86. data/lib/files.com/models/file_action.rb +126 -0
  87. data/lib/files.com/models/file_comment.rb +146 -0
  88. data/lib/files.com/models/file_comment_reaction.rb +100 -0
  89. data/lib/files.com/models/file_part_upload.rb +82 -0
  90. data/lib/files.com/models/file_utils.rb +118 -0
  91. data/lib/files.com/models/folder.rb +357 -0
  92. data/lib/files.com/models/group.rb +208 -0
  93. data/lib/files.com/models/group_user.rb +171 -0
  94. data/lib/files.com/models/history.rb +228 -0
  95. data/lib/files.com/models/history_export.rb +353 -0
  96. data/lib/files.com/models/image.rb +22 -0
  97. data/lib/files.com/models/invoice.rb +117 -0
  98. data/lib/files.com/models/invoice_line_item.rb +57 -0
  99. data/lib/files.com/models/ip_address.rb +66 -0
  100. data/lib/files.com/models/lock.rb +173 -0
  101. data/lib/files.com/models/message.rb +201 -0
  102. data/lib/files.com/models/message_comment.rb +165 -0
  103. data/lib/files.com/models/message_comment_reaction.rb +128 -0
  104. data/lib/files.com/models/message_reaction.rb +128 -0
  105. data/lib/files.com/models/notification.rb +263 -0
  106. data/lib/files.com/models/payment.rb +117 -0
  107. data/lib/files.com/models/payment_line_item.rb +37 -0
  108. data/lib/files.com/models/permission.rb +172 -0
  109. data/lib/files.com/models/preview.rb +37 -0
  110. data/lib/files.com/models/project.rb +140 -0
  111. data/lib/files.com/models/public_ip_address.rb +22 -0
  112. data/lib/files.com/models/public_key.rb +179 -0
  113. data/lib/files.com/models/remote_server.rb +680 -0
  114. data/lib/files.com/models/request.rb +179 -0
  115. data/lib/files.com/models/session.rb +247 -0
  116. data/lib/files.com/models/site.rb +733 -0
  117. data/lib/files.com/models/sso_strategy.rb +227 -0
  118. data/lib/files.com/models/status.rb +37 -0
  119. data/lib/files.com/models/style.rb +131 -0
  120. data/lib/files.com/models/usage_daily_snapshot.rb +66 -0
  121. data/lib/files.com/models/usage_snapshot.rb +96 -0
  122. data/lib/files.com/models/user.rb +876 -0
  123. data/lib/files.com/models/user_cipher_use.rb +63 -0
  124. data/lib/files.com/models/user_request.rb +127 -0
  125. data/lib/files.com/response.rb +25 -0
  126. data/lib/files.com/sizable_io.rb +32 -0
  127. data/lib/files.com/system_profiler.rb +56 -0
  128. data/lib/files.com/util.rb +106 -0
  129. data/lib/files.com/version.rb +5 -0
  130. data/spec/list_spec.rb +214 -0
  131. data/spec/models/file_spec.rb +68 -0
  132. data/spec/models/folder_spec.rb +40 -0
  133. data/spec/spec_helper.rb +36 -0
  134. data/test.sh +8 -0
  135. data/test/test.rb +75 -0
  136. metadata +235 -0
@@ -0,0 +1,118 @@
1
+ module Files
2
+ class FileUtils
3
+ def self.cd(_dir, _options)
4
+ raise NotImplementedError
5
+ end
6
+
7
+ def self.chmod(_mode, _list, _options = {})
8
+ raise NotImplementedError
9
+ end
10
+
11
+ def self.chmod_R(_mode, _list, _options = {}) # rubocop:disable Naming/MethodName
12
+ raise NotImplementedError
13
+ end
14
+
15
+ def self.chown(_user, _group, _list, _options = {})
16
+ raise NotImplementedError
17
+ end
18
+
19
+ def self.chown_R(_user, _group, _list, _options = {}) # rubocop:disable Naming/MethodName
20
+ raise NotImplementedError
21
+ end
22
+
23
+ def self.cp(src, dest, options = {})
24
+ src = [ src ] if src.is_a? String
25
+ src.each do |path|
26
+ return false if File.directory?(path, options)
27
+ end
28
+ cp_r(src, dest, options)
29
+ end
30
+
31
+ def self.cp_r(src, dest, options = {})
32
+ src = [ src ] if src.is_a? String
33
+ src.each do |path|
34
+ FileAction.copy(path, { destination: dest }, options)
35
+ end
36
+ end
37
+
38
+ def self.install(src, dest, options = {})
39
+ cp_r(src, dest, options)
40
+ end
41
+
42
+ def self.ln(_target, _link, _options = {})
43
+ raise NotImplementedError
44
+ end
45
+
46
+ def self.ln_s(_targets, _dir, _options = {})
47
+ raise NotImplementedError
48
+ end
49
+
50
+ def self.ln_sf(_target, _link, _options = {})
51
+ raise NotImplementedError
52
+ end
53
+
54
+ def self.mkdir(list, params = {}, options = {})
55
+ list = [ list ] if list.is_a? String
56
+ list.each do |path|
57
+ Folder.mkdir(path, params, options) unless File.exist?(path, options)
58
+ end
59
+ end
60
+
61
+ def self.mkdir_p(list, options = {})
62
+ list = [ list ] if list.is_a? String
63
+
64
+ to_create = list.map do |fname|
65
+ split = fname.split("/")
66
+ accum = ""
67
+ split.map do |piece|
68
+ accum = [ accum, piece ].join("/")
69
+ end
70
+ end.flatten
71
+
72
+ mkdir(to_create, options)
73
+ end
74
+
75
+ def self.mv(list, dir, options = {})
76
+ list = [ list ] if list.is_a? String
77
+ list.each do |path|
78
+ FileAction.move(path, { destination: dir }, options)
79
+ end
80
+ end
81
+
82
+ def self.pwd
83
+ raise NotImplementedError
84
+ end
85
+
86
+ def self.rm(list, options = {})
87
+ list = [ list ] if list.is_a? String
88
+ list.each do |fname|
89
+ raise Errno::EPERM.new(fname) if File.directory?(fname, options)
90
+ end
91
+ list.each do |fname|
92
+ File.delete(fname, {}, options)
93
+ end
94
+ end
95
+
96
+ def self.rm_r(list, options = {})
97
+ list = [ list ] if list.is_a? String
98
+ list.each do |path|
99
+ File.delete(path, { recursive: true }, options)
100
+ end
101
+ end
102
+
103
+ def self.rm_rf(list, options = {})
104
+ rm_r(list, options)
105
+ end
106
+
107
+ def self.rmdir(list, options = {})
108
+ list = [ list ] if list.is_a? String
109
+ list.each do |path|
110
+ File.delete(path, {}, options) if File.directory?(path, options)
111
+ end
112
+ end
113
+
114
+ def self.touch(_list, _options = {})
115
+ raise NotImplementedError
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,357 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Files
4
+ class Folder
5
+ attr_reader :options, :attributes
6
+
7
+ def self.[](*_)
8
+ raise NotImplementedError
9
+ end
10
+
11
+ def self.chdir(path, &block)
12
+ raise Errno::ENOENT.new(path) if exist? path
13
+
14
+ if block
15
+ yield path
16
+ else
17
+ @@path ||= path
18
+ end
19
+ end
20
+
21
+ def self.children(path, _encoding = "")
22
+ Folder.new(path).contents.map(&:path)
23
+ end
24
+
25
+ def self.chroot(*args); end
26
+
27
+ def self.delete(path, params = {}, options = {})
28
+ File.delete(path, params, options)
29
+ end
30
+
31
+ def self.destroy(path, params = {}, options = {})
32
+ File.destroy(path, params, options)
33
+ end
34
+
35
+ def self.each_child(path, _encoding = "", &block)
36
+ Folder.new(path).each(&block)
37
+ end
38
+
39
+ def self.empty?(*_args)
40
+ Folder.new(path).contents.empty?
41
+ end
42
+
43
+ def self.entries(path)
44
+ list(path)
45
+ end
46
+
47
+ def self.exist?(*args)
48
+ File.exist?(*args)
49
+ end
50
+
51
+ def self.find(path, params = {}, options = {})
52
+ File.find(path, params, options)
53
+ end
54
+
55
+ def self.get(path, params = {}, options = {})
56
+ File.get(path, params, options)
57
+ end
58
+
59
+ def self.foreach(path, _encoding = "", params = {}, options = {})
60
+ list_for(path, params, options).each { |x| yield x }
61
+ end
62
+
63
+ def self.getwd(*_args)
64
+ pwd
65
+ end
66
+
67
+ def self.glob(*_)
68
+ raise NotImplementedError
69
+ end
70
+
71
+ def self.home(*_args)
72
+ ""
73
+ end
74
+
75
+ def self.mkdir(path, params = {}, options = {})
76
+ create(path, params, options)
77
+ end
78
+
79
+ def self.open(*args, &block)
80
+ if block.nil?
81
+ new *args
82
+ else
83
+ yield new *args
84
+ end
85
+ end
86
+
87
+ def self.pwd(*_args)
88
+ @@path ||= ""
89
+ end
90
+
91
+ def self.rmdir(path)
92
+ delete(path)
93
+ end
94
+
95
+ def self.unlink(path)
96
+ delete(path)
97
+ end
98
+
99
+ def self.update(path, params = {}, options = {})
100
+ File.update(path, params, options)
101
+ end
102
+
103
+ def initialize(*args)
104
+ @attributes = (args[0].is_a?(Hash) && args[0]) || {}
105
+ @options = (args[1].is_a?(Hash) && args[1]) || {}
106
+ @attributes['path'] = args[0] if args[0].is_a?(String)
107
+ end
108
+
109
+ def close(*args); end
110
+
111
+ def each
112
+ contents.each { |x| yield x }
113
+ end
114
+
115
+ def fileno
116
+ stats.id
117
+ end
118
+
119
+ def contents
120
+ @contents ||= Folder.list(path, {}, @options)
121
+ end
122
+
123
+ def stats
124
+ @stats ||= File.download(@filename, { "action": "stat" }, @options)
125
+ end
126
+
127
+ def pos
128
+ @pos ||= 0
129
+ end
130
+
131
+ attr_writer :pos
132
+
133
+ def read(*_args)
134
+ contents[@pos]
135
+ end
136
+
137
+ def rewind
138
+ @pos = 0
139
+ end
140
+
141
+ def seek(pos)
142
+ @pos = pos
143
+ end
144
+
145
+ def tell
146
+ @pos
147
+ end
148
+
149
+ def to_path
150
+ path
151
+ end
152
+
153
+ # int64 - File/Folder ID
154
+ def id
155
+ @attributes[:id]
156
+ end
157
+
158
+ def id=(value)
159
+ @attributes[:id] = value
160
+ end
161
+
162
+ # string - File/Folder path This must be slash-delimited, but it must neither start nor end with a slash. Maximum of 5000 characters.
163
+ def path
164
+ @attributes[:path]
165
+ end
166
+
167
+ def path=(value)
168
+ @attributes[:path] = value
169
+ end
170
+
171
+ # string - File/Folder display name
172
+ def display_name
173
+ @attributes[:display_name]
174
+ end
175
+
176
+ def display_name=(value)
177
+ @attributes[:display_name] = value
178
+ end
179
+
180
+ # string - Type: `directory` or `file`.
181
+ def type
182
+ @attributes[:type]
183
+ end
184
+
185
+ def type=(value)
186
+ @attributes[:type] = value
187
+ end
188
+
189
+ # int64 - File/Folder size
190
+ def size
191
+ @attributes[:size]
192
+ end
193
+
194
+ def size=(value)
195
+ @attributes[:size] = value
196
+ end
197
+
198
+ # 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.
199
+ def mtime
200
+ @attributes[:mtime]
201
+ end
202
+
203
+ def mtime=(value)
204
+ @attributes[:mtime] = value
205
+ end
206
+
207
+ # 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.
208
+ def provided_mtime
209
+ @attributes[:provided_mtime]
210
+ end
211
+
212
+ def provided_mtime=(value)
213
+ @attributes[:provided_mtime] = value
214
+ end
215
+
216
+ # string - File CRC32 checksum. This is sometimes delayed, so if you get a blank response, wait and try again.
217
+ def crc32
218
+ @attributes[:crc32]
219
+ end
220
+
221
+ def crc32=(value)
222
+ @attributes[:crc32] = value
223
+ end
224
+
225
+ # string - File MD5 checksum. This is sometimes delayed, so if you get a blank response, wait and try again.
226
+ def md5
227
+ @attributes[:md5]
228
+ end
229
+
230
+ def md5=(value)
231
+ @attributes[:md5] = value
232
+ end
233
+
234
+ # string - MIME Type. This is determined by the filename extension and is not stored separately internally.
235
+ def mime_type
236
+ @attributes[:mime_type]
237
+ end
238
+
239
+ def mime_type=(value)
240
+ @attributes[:mime_type] = value
241
+ end
242
+
243
+ # string - Region location
244
+ def region
245
+ @attributes[:region]
246
+ end
247
+
248
+ def region=(value)
249
+ @attributes[:region] = value
250
+ end
251
+
252
+ # string - A short string representing the current user's permissions. Can be `r`,`w`,`p`, or any combination
253
+ def permissions
254
+ @attributes[:permissions]
255
+ end
256
+
257
+ def permissions=(value)
258
+ @attributes[:permissions] = value
259
+ end
260
+
261
+ # boolean - Are subfolders locked and unable to be modified?
262
+ def subfolders_locked?
263
+ @attributes[:subfolders_locked?]
264
+ end
265
+
266
+ def subfolders_locked=(value)
267
+ @attributes[:subfolders_locked?] = value
268
+ end
269
+
270
+ # string - Link to download file. Provided only in response to a download request.
271
+ def download_uri
272
+ @attributes[:download_uri]
273
+ end
274
+
275
+ def download_uri=(value)
276
+ @attributes[:download_uri] = value
277
+ end
278
+
279
+ # string - Bookmark/priority color of file/folder
280
+ def priority_color
281
+ @attributes[:priority_color]
282
+ end
283
+
284
+ def priority_color=(value)
285
+ @attributes[:priority_color] = value
286
+ end
287
+
288
+ # int64 - File preview ID
289
+ def preview_id
290
+ @attributes[:preview_id]
291
+ end
292
+
293
+ def preview_id=(value)
294
+ @attributes[:preview_id] = value
295
+ end
296
+
297
+ # File preview
298
+ def preview
299
+ @attributes[:preview]
300
+ end
301
+
302
+ def preview=(value)
303
+ @attributes[:preview] = value
304
+ end
305
+
306
+ def save
307
+ if @attributes[:path]
308
+ raise NotImplementedError.new("The Folder object doesn't support updates.")
309
+ else
310
+ new_obj = Folder.create(@attributes, @options)
311
+ @attributes = new_obj.attributes
312
+ end
313
+ end
314
+
315
+ # Parameters:
316
+ # page - int64 - Current page number.
317
+ # per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
318
+ # action - string - Action to take. Can be `count`, `count_nrs` (non recursive), `size`, `permissions`, or blank.
319
+ # path (required) - string - Path to operate on.
320
+ # 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 header.
321
+ # filter - string - If specified, will to filter folders/files list by this string. Wildcards of `*` and `?` are acceptable here.
322
+ # preview_size - string - Request a preview size. Can be `small` (default), `large`, `xlarge`, or `pdf`.
323
+ # search - string - If `search_all` is `true`, provide the search string here. Otherwise, this parameter acts like an alias of `filter`.
324
+ # search_all - boolean - Search entire site?
325
+ # with_previews - boolean - Include file previews?
326
+ # with_priority_color - boolean - Include file priority color information?
327
+ def self.list_for(path, params = {}, options = {})
328
+ params ||= {}
329
+ params[:path] = path
330
+ raise InvalidParameterError.new("Bad parameter: page must be an Integer") if params.dig(:page) and !params.dig(:page).is_a?(Integer)
331
+ raise InvalidParameterError.new("Bad parameter: per_page must be an Integer") if params.dig(:per_page) and !params.dig(:per_page).is_a?(Integer)
332
+ raise InvalidParameterError.new("Bad parameter: action must be an String") if params.dig(:action) and !params.dig(:action).is_a?(String)
333
+ raise InvalidParameterError.new("Bad parameter: path must be an String") if params.dig(:path) and !params.dig(:path).is_a?(String)
334
+ raise InvalidParameterError.new("Bad parameter: cursor must be an String") if params.dig(:cursor) and !params.dig(:cursor).is_a?(String)
335
+ raise InvalidParameterError.new("Bad parameter: filter must be an String") if params.dig(:filter) and !params.dig(:filter).is_a?(String)
336
+ raise InvalidParameterError.new("Bad parameter: preview_size must be an String") if params.dig(:preview_size) and !params.dig(:preview_size).is_a?(String)
337
+ raise InvalidParameterError.new("Bad parameter: search must be an String") if params.dig(:search) and !params.dig(:search).is_a?(String)
338
+ raise MissingParameterError.new("Parameter missing: path") unless params.dig(:path)
339
+
340
+ List.new(File, params) do
341
+ Api.send_request("/folders/#{params[:path]}", :get, params, options)
342
+ end
343
+ end
344
+
345
+ # Parameters:
346
+ # path (required) - string - Path to operate on.
347
+ def self.create(path, params = {}, options = {})
348
+ params ||= {}
349
+ params[:path] = path
350
+ raise InvalidParameterError.new("Bad parameter: path must be an String") if params.dig(:path) and !params.dig(:path).is_a?(String)
351
+ raise MissingParameterError.new("Parameter missing: path") unless params.dig(:path)
352
+
353
+ response, options = Api.send_request("/folders/#{params[:path]}", :post, params, options)
354
+ File.new(response.data, options)
355
+ end
356
+ end
357
+ end