files.com 1.0.255 → 1.0.257

Sign up to get free protection for your applications and to get access to all the features.
@@ -65,6 +65,10 @@ var FileUploadPart = /*#__PURE__*/(0, _createClass2.default)(function FileUpload
65
65
  (0, _defineProperty2.default)(this, "getParallelParts", function () {
66
66
  return _this.attributes.parallel_parts;
67
67
  });
68
+ // boolean # If `true`, parts may be retried. If `false`, a part cannot be retried and the upload should be restarted.
69
+ (0, _defineProperty2.default)(this, "getRetryParts", function () {
70
+ return _this.attributes.retry_parts;
71
+ });
68
72
  // object # Additional HTTP parameters to send with the upload
69
73
  (0, _defineProperty2.default)(this, "getParameters", function () {
70
74
  return _this.attributes.parameters;
@@ -66,13 +66,6 @@ var InboxRecipient = /*#__PURE__*/(0, _createClass2.default)(function InboxRecip
66
66
  (0, _defineProperty2.default)(this, "setSentAt", function (value) {
67
67
  _this.attributes.sent_at = value;
68
68
  });
69
- // int64 # User ID. Provide a value of `0` to operate the current session's user.
70
- (0, _defineProperty2.default)(this, "getUserId", function () {
71
- return _this.attributes.user_id;
72
- });
73
- (0, _defineProperty2.default)(this, "setUserId", function (value) {
74
- _this.attributes.user_id = value;
75
- });
76
69
  // int64 # Inbox to share.
77
70
  (0, _defineProperty2.default)(this, "getInboxId", function () {
78
71
  return _this.attributes.inbox_id;
@@ -110,7 +103,6 @@ var InboxRecipient = /*#__PURE__*/(0, _createClass2.default)(function InboxRecip
110
103
  this.options = _objectSpread({}, options);
111
104
  });
112
105
  // Parameters:
113
- // user_id - int64 - User ID. Provide a value of `0` to operate the current session's user.
114
106
  // cursor - string - Used for pagination. When a list request has more records available, cursors are provided in the response headers `X-Files-Cursor-Next` and `X-Files-Cursor-Prev`. Send one of those cursor value here to resume an existing list from the next available record. Note: many of our SDKs have iterator methods that will automatically handle cursor-based pagination.
115
107
  // per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
116
108
  // sort_by - object - If set, sort records by the specified field in either `asc` or `desc` direction (e.g. `sort_by[has_registrations]=desc`). Valid fields are `has_registrations`.
@@ -133,38 +125,32 @@ var InboxRecipient = /*#__PURE__*/(0, _createClass2.default)(function InboxRecip
133
125
  }
134
126
  throw new errors.MissingParameterError('Parameter missing: inbox_id');
135
127
  case 4:
136
- if (!(params['user_id'] && !(0, _utils.isInt)(params['user_id']))) {
137
- _context.next = 6;
138
- break;
139
- }
140
- throw new errors.InvalidParameterError("Bad parameter: user_id must be of type Int, received ".concat((0, _utils.getType)(params['user_id'])));
141
- case 6:
142
128
  if (!(params['cursor'] && !(0, _utils.isString)(params['cursor']))) {
143
- _context.next = 8;
129
+ _context.next = 6;
144
130
  break;
145
131
  }
146
132
  throw new errors.InvalidParameterError("Bad parameter: cursor must be of type String, received ".concat((0, _utils.getType)(params['cursor'])));
147
- case 8:
133
+ case 6:
148
134
  if (!(params['per_page'] && !(0, _utils.isInt)(params['per_page']))) {
149
- _context.next = 10;
135
+ _context.next = 8;
150
136
  break;
151
137
  }
152
138
  throw new errors.InvalidParameterError("Bad parameter: per_page must be of type Int, received ".concat((0, _utils.getType)(params['per_page'])));
153
- case 10:
139
+ case 8:
154
140
  if (!(params['inbox_id'] && !(0, _utils.isInt)(params['inbox_id']))) {
155
- _context.next = 12;
141
+ _context.next = 10;
156
142
  break;
157
143
  }
158
144
  throw new errors.InvalidParameterError("Bad parameter: inbox_id must be of type Int, received ".concat((0, _utils.getType)(params['inbox_id'])));
159
- case 12:
160
- _context.next = 14;
145
+ case 10:
146
+ _context.next = 12;
161
147
  return _Api.default.sendRequest("/inbox_recipients", 'GET', params, options);
162
- case 14:
148
+ case 12:
163
149
  response = _context.sent;
164
150
  return _context.abrupt("return", (response === null || response === void 0 ? void 0 : (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.map(function (obj) {
165
151
  return new InboxRecipient(obj, options);
166
152
  })) || []);
167
- case 16:
153
+ case 14:
168
154
  case "end":
169
155
  return _context.stop();
170
156
  }
@@ -176,7 +162,6 @@ var InboxRecipient = /*#__PURE__*/(0, _createClass2.default)(function InboxRecip
176
162
  return InboxRecipient.list(params, options);
177
163
  });
178
164
  // Parameters:
179
- // user_id - int64 - User ID. Provide a value of `0` to operate the current session's user.
180
165
  // inbox_id (required) - int64 - Inbox to share.
181
166
  // recipient (required) - string - Email address to share this inbox with.
182
167
  // name - string - Name of recipient.
@@ -205,48 +190,42 @@ var InboxRecipient = /*#__PURE__*/(0, _createClass2.default)(function InboxRecip
205
190
  }
206
191
  throw new errors.MissingParameterError('Parameter missing: recipient');
207
192
  case 6:
208
- if (!(params['user_id'] && !(0, _utils.isInt)(params['user_id']))) {
209
- _context2.next = 8;
210
- break;
211
- }
212
- throw new errors.InvalidParameterError("Bad parameter: user_id must be of type Int, received ".concat((0, _utils.getType)(params['user_id'])));
213
- case 8:
214
193
  if (!(params['inbox_id'] && !(0, _utils.isInt)(params['inbox_id']))) {
215
- _context2.next = 10;
194
+ _context2.next = 8;
216
195
  break;
217
196
  }
218
197
  throw new errors.InvalidParameterError("Bad parameter: inbox_id must be of type Int, received ".concat((0, _utils.getType)(params['inbox_id'])));
219
- case 10:
198
+ case 8:
220
199
  if (!(params['recipient'] && !(0, _utils.isString)(params['recipient']))) {
221
- _context2.next = 12;
200
+ _context2.next = 10;
222
201
  break;
223
202
  }
224
203
  throw new errors.InvalidParameterError("Bad parameter: recipient must be of type String, received ".concat((0, _utils.getType)(params['recipient'])));
225
- case 12:
204
+ case 10:
226
205
  if (!(params['name'] && !(0, _utils.isString)(params['name']))) {
227
- _context2.next = 14;
206
+ _context2.next = 12;
228
207
  break;
229
208
  }
230
209
  throw new errors.InvalidParameterError("Bad parameter: name must be of type String, received ".concat((0, _utils.getType)(params['name'])));
231
- case 14:
210
+ case 12:
232
211
  if (!(params['company'] && !(0, _utils.isString)(params['company']))) {
233
- _context2.next = 16;
212
+ _context2.next = 14;
234
213
  break;
235
214
  }
236
215
  throw new errors.InvalidParameterError("Bad parameter: company must be of type String, received ".concat((0, _utils.getType)(params['company'])));
237
- case 16:
216
+ case 14:
238
217
  if (!(params['note'] && !(0, _utils.isString)(params['note']))) {
239
- _context2.next = 18;
218
+ _context2.next = 16;
240
219
  break;
241
220
  }
242
221
  throw new errors.InvalidParameterError("Bad parameter: note must be of type String, received ".concat((0, _utils.getType)(params['note'])));
243
- case 18:
244
- _context2.next = 20;
222
+ case 16:
223
+ _context2.next = 18;
245
224
  return _Api.default.sendRequest("/inbox_recipients", 'POST', params, options);
246
- case 20:
225
+ case 18:
247
226
  response = _context2.sent;
248
227
  return _context2.abrupt("return", new InboxRecipient(response === null || response === void 0 ? void 0 : response.data, options));
249
- case 22:
228
+ case 20:
250
229
  case "end":
251
230
  return _context2.stop();
252
231
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "files.com",
3
- "version": "1.0.255",
3
+ "version": "1.0.257",
4
4
  "description": "Files.com SDK for JavaScript",
5
5
  "keywords": [
6
6
  "files.com",
@@ -21,6 +21,19 @@ const saveUrlToStream = async (url, stream) => new Promise((resolve, reject) =>
21
21
  })
22
22
  })
23
23
 
24
+ const saveUrlToString = async url => new Promise((resolve, reject) => {
25
+ const https = require('https')
26
+
27
+ https.get(url, response => {
28
+ const chunks = []
29
+ response.on('data', chunk => chunks.push(Buffer.from(chunk)))
30
+ response.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')))
31
+ })
32
+ .on('error', error => {
33
+ reject(error)
34
+ })
35
+ })
36
+
24
37
  const saveUrlToFile = async (url, destinationPath) => {
25
38
  const stream = openDiskFileWriteStream(destinationPath)
26
39
  await saveUrlToStream(url, stream)
@@ -32,4 +45,5 @@ export {
32
45
  openDiskFileWriteStream,
33
46
  saveUrlToFile,
34
47
  saveUrlToStream,
48
+ saveUrlToString,
35
49
  }
@@ -199,6 +199,21 @@ class File {
199
199
  return saveUrlToStream(downloadUri, writableStream)
200
200
  }
201
201
 
202
+ downloadToString = async () => {
203
+ if (isBrowser()) {
204
+ throw new errors.NotImplementedError('String downloads are only available in a NodeJS environment')
205
+ }
206
+
207
+ const downloadUri = this.getDownloadUri()
208
+
209
+ if (!downloadUri) {
210
+ throw new errors.EmptyPropertyError('Current object has no download URI')
211
+ }
212
+
213
+ const { saveUrlToString } = require('../isomorphic/File.node.js')
214
+ return saveUrlToString(downloadUri)
215
+ }
216
+
202
217
  downloadToFile = async destinationPath => {
203
218
  if (isBrowser()) {
204
219
  throw new errors.NotImplementedError('Disk file downloads are only available in a NodeJS environment')
@@ -50,6 +50,9 @@ class FileUploadPart {
50
50
  // boolean # If `true`, multiple parts may be uploaded in parallel. If `false`, be sure to only upload one part at a time, in order.
51
51
  getParallelParts = () => this.attributes.parallel_parts
52
52
 
53
+ // boolean # If `true`, parts may be retried. If `false`, a part cannot be retried and the upload should be restarted.
54
+ getRetryParts = () => this.attributes.retry_parts
55
+
53
56
  // object # Additional HTTP parameters to send with the upload
54
57
  getParameters = () => this.attributes.parameters
55
58
 
@@ -58,13 +58,6 @@ class InboxRecipient {
58
58
  this.attributes.sent_at = value
59
59
  }
60
60
 
61
- // int64 # User ID. Provide a value of `0` to operate the current session's user.
62
- getUserId = () => this.attributes.user_id
63
-
64
- setUserId = value => {
65
- this.attributes.user_id = value
66
- }
67
-
68
61
  // int64 # Inbox to share.
69
62
  getInboxId = () => this.attributes.inbox_id
70
63
 
@@ -91,7 +84,6 @@ class InboxRecipient {
91
84
  }
92
85
 
93
86
  // Parameters:
94
- // user_id - int64 - User ID. Provide a value of `0` to operate the current session's user.
95
87
  // cursor - string - Used for pagination. When a list request has more records available, cursors are provided in the response headers `X-Files-Cursor-Next` and `X-Files-Cursor-Prev`. Send one of those cursor value here to resume an existing list from the next available record. Note: many of our SDKs have iterator methods that will automatically handle cursor-based pagination.
96
88
  // per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
97
89
  // sort_by - object - If set, sort records by the specified field in either `asc` or `desc` direction (e.g. `sort_by[has_registrations]=desc`). Valid fields are `has_registrations`.
@@ -102,10 +94,6 @@ class InboxRecipient {
102
94
  throw new errors.MissingParameterError('Parameter missing: inbox_id')
103
95
  }
104
96
 
105
- if (params['user_id'] && !isInt(params['user_id'])) {
106
- throw new errors.InvalidParameterError(`Bad parameter: user_id must be of type Int, received ${getType(params['user_id'])}`)
107
- }
108
-
109
97
  if (params['cursor'] && !isString(params['cursor'])) {
110
98
  throw new errors.InvalidParameterError(`Bad parameter: cursor must be of type String, received ${getType(params['cursor'])}`)
111
99
  }
@@ -127,7 +115,6 @@ class InboxRecipient {
127
115
  InboxRecipient.list(params, options)
128
116
 
129
117
  // Parameters:
130
- // user_id - int64 - User ID. Provide a value of `0` to operate the current session's user.
131
118
  // inbox_id (required) - int64 - Inbox to share.
132
119
  // recipient (required) - string - Email address to share this inbox with.
133
120
  // name - string - Name of recipient.
@@ -143,10 +130,6 @@ class InboxRecipient {
143
130
  throw new errors.MissingParameterError('Parameter missing: recipient')
144
131
  }
145
132
 
146
- if (params['user_id'] && !isInt(params['user_id'])) {
147
- throw new errors.InvalidParameterError(`Bad parameter: user_id must be of type Int, received ${getType(params['user_id'])}`)
148
- }
149
-
150
133
  if (params['inbox_id'] && !isInt(params['inbox_id'])) {
151
134
  throw new errors.InvalidParameterError(`Bad parameter: inbox_id must be of type Int, received ${getType(params['inbox_id'])}`)
152
135
  }
package/test/src/index.js CHANGED
@@ -64,7 +64,7 @@ const testSuite = async () => {
64
64
  Logger.info('***** testFolderListAutoPagination() succeeded! *****')
65
65
  }
66
66
 
67
- const testUploadAndDownload = async () => {
67
+ const testUploadAndDownloadToFile = async () => {
68
68
  const sourceFilePath = '../files.com-logo.png'
69
69
 
70
70
  const displayName = `files.com-logo__${nonce}.png`
@@ -99,7 +99,37 @@ const testSuite = async () => {
99
99
 
100
100
  await file.delete()
101
101
 
102
- Logger.info('***** testUploadAndDownload() succeeded! *****')
102
+ Logger.info('***** testUploadAndDownloadToFile() succeeded! *****')
103
+ }
104
+
105
+ const testUploadAndDownloadToString = async () => {
106
+ const displayName = `test-text__${nonce}.txt`
107
+ const destinationPath = `${SDK_TEST_ROOT_FOLDER}/${displayName}`
108
+
109
+ const sourceFileContents = 'The quick brown fox jumped over the lazy dogs.'
110
+ const file = await File.uploadData(destinationPath, sourceFileContents)
111
+
112
+ assert(!!file.path)
113
+ assert(file.display_name === displayName)
114
+
115
+ const foundFile = await File.find(destinationPath)
116
+
117
+ assert(foundFile.path === destinationPath)
118
+ assert(foundFile.display_name === displayName)
119
+ assert(typeof foundFile.getDownloadUri() === 'undefined')
120
+
121
+ if (!isBrowser()) {
122
+ const downloadableFile = await foundFile.download()
123
+ assert(typeof downloadableFile.getDownloadUri() !== 'undefined')
124
+
125
+ const downloadedFileContents = await downloadableFile.downloadToString()
126
+
127
+ assert(sourceFileContents === downloadedFileContents)
128
+ }
129
+
130
+ await file.delete()
131
+
132
+ Logger.info('***** testUploadAndDownloadToString() succeeded! *****')
103
133
  }
104
134
 
105
135
  /* to run this test, put a file (or symlink) at huge-file.ext * /
@@ -200,7 +230,8 @@ const testSuite = async () => {
200
230
  //
201
231
 
202
232
  await testFolderListAutoPagination()
203
- await testUploadAndDownload()
233
+ await testUploadAndDownloadToFile()
234
+ await testUploadAndDownloadToString()
204
235
  // await testUploadHugeFile() // to run this test, put a file (or symlink) at huge-file.ext
205
236
  await testSession()
206
237
  await testFailure()