Skip to content

Commit d1fca58

Browse files
CLEN-1556/fix/error handling when send file encounters issues (#338)
* fix: error handling when send file encounters issues * PubNub SDK v7.3.3 release. --------- Co-authored-by: PubNub Release Bot <120067856+pubnub-release-bot@users.noreply.github.com>
1 parent 3745862 commit d1fca58

File tree

11 files changed

+68
-93
lines changed

11 files changed

+68
-93
lines changed

.pubnub.yml

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
---
22
changelog:
3+
- date: 2023-09-11
4+
version: v7.3.3
5+
changes:
6+
- type: bug
7+
text: "Fixes issue of getting misleading error message when sendFile fails."
38
- date: 2023-08-31
49
version: v7.3.2
510
changes:
@@ -890,7 +895,7 @@ supported-platforms:
890895
- 'Ubuntu 14.04 and up'
891896
- 'Windows 7 and up'
892897
version: 'Pubnub Javascript for Node'
893-
version: '7.3.2'
898+
version: '7.3.3'
894899
sdks:
895900
- full-name: PubNub Javascript SDK
896901
short-name: Javascript
@@ -906,7 +911,7 @@ sdks:
906911
- distribution-type: source
907912
distribution-repository: GitHub release
908913
package-name: pubnub.js
909-
location: https://github.com/pubnub/javascript/archive/refs/tags/v7.3.2.zip
914+
location: https://github.com/pubnub/javascript/archive/refs/tags/v7.3.3.zip
910915
requires:
911916
- name: 'agentkeepalive'
912917
min-version: '3.5.2'
@@ -1577,7 +1582,7 @@ sdks:
15771582
- distribution-type: library
15781583
distribution-repository: GitHub release
15791584
package-name: pubnub.js
1580-
location: https://github.com/pubnub/javascript/releases/download/v7.3.2/pubnub.7.3.2.js
1585+
location: https://github.com/pubnub/javascript/releases/download/v7.3.3/pubnub.7.3.3.js
15811586
requires:
15821587
- name: 'agentkeepalive'
15831588
min-version: '3.5.2'

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## v7.3.3
2+
September 11 2023
3+
4+
#### Fixed
5+
- Fixes issue of getting misleading error message when sendFile fails.
6+
17
## v7.3.2
28
August 31 2023
39

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ Watch [Getting Started with PubNub JS SDK](https://app.dashcam.io/replay/64ee0d2
2828
npm install pubnub
2929
```
3030
* or download one of our builds from our CDN:
31-
* https://cdn.pubnub.com/sdk/javascript/pubnub.7.3.2.js
32-
* https://cdn.pubnub.com/sdk/javascript/pubnub.7.3.2.min.js
31+
* https://cdn.pubnub.com/sdk/javascript/pubnub.7.3.3.js
32+
* https://cdn.pubnub.com/sdk/javascript/pubnub.7.3.3.min.js
3333
3434
2. Configure your keys:
3535

dist/web/pubnub.js

+22-33
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,7 @@
783783
return this;
784784
};
785785
default_1.prototype.getVersion = function () {
786-
return '7.3.2';
786+
return '7.3.3';
787787
};
788788
default_1.prototype._addPnsdkSuffix = function (name, suffix) {
789789
this._PNSDKSuffix[name] = suffix;
@@ -4679,17 +4679,6 @@
46794679
}); },
46804680
};
46814681

4682-
var getErrorFromResponse = function (response) {
4683-
return new Promise(function (resolve) {
4684-
var result = '';
4685-
response.on('data', function (data) {
4686-
result += data.toString('utf8');
4687-
});
4688-
response.on('end', function () {
4689-
resolve(result);
4690-
});
4691-
});
4692-
};
46934682
var sendFile = function (_a) {
46944683
var _this = this;
46954684
var generateUploadUrl = _a.generateUploadUrl, publishFile = _a.publishFile, _b = _a.modules, PubNubFile = _b.PubNubFile, config = _b.config, cryptography = _b.cryptography, networking = _b.networking;
@@ -4726,7 +4715,7 @@
47264715
}
47274716
_s.label = 4;
47284717
case 4:
4729-
_s.trys.push([4, 18, , 22]);
4718+
_s.trys.push([4, 18, , 19]);
47304719
if (!(PubNubFile.supportsFileUri && input.uri)) return [3 /*break*/, 7];
47314720
_f = (_e = networking).POSTFILE;
47324721
_g = [url, formFieldsWithMimeType];
@@ -4763,27 +4752,27 @@
47634752
result = _s.sent();
47644753
return [3 /*break*/, 17];
47654754
case 16: throw new Error('Unsupported environment');
4766-
case 17: return [3 /*break*/, 22];
4755+
case 17: return [3 /*break*/, 19];
47674756
case 18:
47684757
e_1 = _s.sent();
4769-
if (!e_1.response) return [3 /*break*/, 20];
4770-
return [4 /*yield*/, getErrorFromResponse(e_1.response)];
4758+
if (e_1.response && typeof e_1.response.text === 'string') {
4759+
errorBody = e_1.response.text;
4760+
reason = /<Message>(.*)<\/Message>/gi.exec(errorBody);
4761+
throw new PubNubError(reason ? "Upload to bucket failed: ".concat(reason[1]) : 'Upload to bucket failed.', e_1);
4762+
}
4763+
else {
4764+
throw new PubNubError('Upload to bucket failed.', e_1);
4765+
}
47714766
case 19:
4772-
errorBody = _s.sent();
4773-
reason = /<Message>(.*)<\/Message>/gi.exec(errorBody);
4774-
throw new PubNubError(reason ? "Upload to bucket failed: ".concat(reason[1]) : 'Upload to bucket failed.', e_1);
4775-
case 20: throw new PubNubError('Upload to bucket failed.', e_1);
4776-
case 21: return [3 /*break*/, 22];
4777-
case 22:
47784767
if (result.status !== 204) {
47794768
throw new PubNubError('Upload to bucket was unsuccessful', result);
47804769
}
47814770
retries = config.fileUploadPublishRetryLimit;
47824771
wasSuccessful = false;
47834772
publishResult = { timetoken: '0' };
4784-
_s.label = 23;
4785-
case 23:
4786-
_s.trys.push([23, 25, , 26]);
4773+
_s.label = 20;
4774+
case 20:
4775+
_s.trys.push([20, 22, , 23]);
47874776
return [4 /*yield*/, publishFile({
47884777
channel: channel,
47894778
message: message,
@@ -4793,19 +4782,19 @@
47934782
storeInHistory: storeInHistory,
47944783
ttl: ttl,
47954784
})];
4796-
case 24:
4785+
case 21:
47974786
/* eslint-disable-next-line no-await-in-loop */
47984787
publishResult = _s.sent();
47994788
wasSuccessful = true;
4800-
return [3 /*break*/, 26];
4801-
case 25:
4789+
return [3 /*break*/, 23];
4790+
case 22:
48024791
_s.sent();
48034792
retries -= 1;
4804-
return [3 /*break*/, 26];
4805-
case 26:
4806-
if (!wasSuccessful && retries > 0) return [3 /*break*/, 23];
4807-
_s.label = 27;
4808-
case 27:
4793+
return [3 /*break*/, 23];
4794+
case 23:
4795+
if (!wasSuccessful && retries > 0) return [3 /*break*/, 20];
4796+
_s.label = 24;
4797+
case 24:
48094798
if (!wasSuccessful) {
48104799
throw new PubNubError('Publish failed. You may want to execute that operation manually using pubnub.publishFile', {
48114800
channel: channel,

dist/web/pubnub.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/core/components/config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ var default_1 = /** @class */ (function () {
169169
return this;
170170
};
171171
default_1.prototype.getVersion = function () {
172-
return '7.3.2';
172+
return '7.3.3';
173173
};
174174
default_1.prototype._addPnsdkSuffix = function (name, suffix) {
175175
this._PNSDKSuffix[name] = suffix;

lib/core/endpoints/file_upload/send_file.js

+22-32
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
3737
};
3838
Object.defineProperty(exports, "__esModule", { value: true });
3939
var endpoint_1 = require("../../components/endpoint");
40-
var getErrorFromResponse = function (response) {
41-
return new Promise(function (resolve) {
42-
var result = '';
43-
response.on('data', function (data) {
44-
result += data.toString('utf8');
45-
});
46-
response.on('end', function () {
47-
resolve(result);
48-
});
49-
});
50-
};
5140
var sendFile = function (_a) {
5241
var _this = this;
5342
var generateUploadUrl = _a.generateUploadUrl, publishFile = _a.publishFile, _b = _a.modules, PubNubFile = _b.PubNubFile, config = _b.config, cryptography = _b.cryptography, networking = _b.networking;
@@ -84,7 +73,7 @@ var sendFile = function (_a) {
8473
}
8574
_s.label = 4;
8675
case 4:
87-
_s.trys.push([4, 18, , 22]);
76+
_s.trys.push([4, 18, , 19]);
8877
if (!(PubNubFile.supportsFileUri && input.uri)) return [3 /*break*/, 7];
8978
_f = (_e = networking).POSTFILE;
9079
_g = [url, formFieldsWithMimeType];
@@ -121,27 +110,28 @@ var sendFile = function (_a) {
121110
result = _s.sent();
122111
return [3 /*break*/, 17];
123112
case 16: throw new Error('Unsupported environment');
124-
case 17: return [3 /*break*/, 22];
113+
case 17: return [3 /*break*/, 19];
125114
case 18:
126115
e_1 = _s.sent();
127-
if (!e_1.response) return [3 /*break*/, 20];
128-
return [4 /*yield*/, getErrorFromResponse(e_1.response)];
116+
if (e_1.response && typeof e_1.response.text === 'string') {
117+
errorBody = e_1.response.text;
118+
reason = /<Message>(.*)<\/Message>/gi.exec(errorBody);
119+
throw new endpoint_1.PubNubError(reason ? "Upload to bucket failed: ".concat(reason[1]) : 'Upload to bucket failed.', e_1);
120+
}
121+
else {
122+
throw new endpoint_1.PubNubError('Upload to bucket failed.', e_1);
123+
}
124+
return [3 /*break*/, 19];
129125
case 19:
130-
errorBody = _s.sent();
131-
reason = /<Message>(.*)<\/Message>/gi.exec(errorBody);
132-
throw new endpoint_1.PubNubError(reason ? "Upload to bucket failed: ".concat(reason[1]) : 'Upload to bucket failed.', e_1);
133-
case 20: throw new endpoint_1.PubNubError('Upload to bucket failed.', e_1);
134-
case 21: return [3 /*break*/, 22];
135-
case 22:
136126
if (result.status !== 204) {
137127
throw new endpoint_1.PubNubError('Upload to bucket was unsuccessful', result);
138128
}
139129
retries = config.fileUploadPublishRetryLimit;
140130
wasSuccessful = false;
141131
publishResult = { timetoken: '0' };
142-
_s.label = 23;
143-
case 23:
144-
_s.trys.push([23, 25, , 26]);
132+
_s.label = 20;
133+
case 20:
134+
_s.trys.push([20, 22, , 23]);
145135
return [4 /*yield*/, publishFile({
146136
channel: channel,
147137
message: message,
@@ -151,19 +141,19 @@ var sendFile = function (_a) {
151141
storeInHistory: storeInHistory,
152142
ttl: ttl,
153143
})];
154-
case 24:
144+
case 21:
155145
/* eslint-disable-next-line no-await-in-loop */
156146
publishResult = _s.sent();
157147
wasSuccessful = true;
158-
return [3 /*break*/, 26];
159-
case 25:
148+
return [3 /*break*/, 23];
149+
case 22:
160150
e_2 = _s.sent();
161151
retries -= 1;
162-
return [3 /*break*/, 26];
163-
case 26:
164-
if (!wasSuccessful && retries > 0) return [3 /*break*/, 23];
165-
_s.label = 27;
166-
case 27:
152+
return [3 /*break*/, 23];
153+
case 23:
154+
if (!wasSuccessful && retries > 0) return [3 /*break*/, 20];
155+
_s.label = 24;
156+
case 24:
167157
if (!wasSuccessful) {
168158
throw new endpoint_1.PubNubError('Publish failed. You may want to execute that operation manually using pubnub.publishFile', {
169159
channel: channel,

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pubnub",
3-
"version": "7.3.2",
3+
"version": "7.3.3",
44
"author": "PubNub <support@pubnub.com>",
55
"description": "Publish & Subscribe Real-time Messaging with PubNub",
66
"scripts": {

src/core/components/config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ export default class {
339339
}
340340

341341
getVersion() {
342-
return '7.3.2';
342+
return '7.3.3';
343343
}
344344

345345
_addPnsdkSuffix(name, suffix) {

src/core/endpoints/file_upload/send_file.js

+2-17
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,5 @@
11
import { PubNubError, createValidationError } from '../../components/endpoint';
22

3-
const getErrorFromResponse = (response) =>
4-
new Promise((resolve) => {
5-
let result = '';
6-
7-
response.on('data', (data) => {
8-
result += data.toString('utf8');
9-
});
10-
11-
response.on('end', () => {
12-
resolve(result);
13-
});
14-
});
15-
163
const sendFile = function ({
174
generateUploadUrl,
185
publishFile,
@@ -68,11 +55,9 @@ const sendFile = function ({
6855
throw new Error('Unsupported environment');
6956
}
7057
} catch (e) {
71-
if (e.response) {
72-
const errorBody = await getErrorFromResponse(e.response);
73-
58+
if (e.response && typeof e.response.text === 'string') {
59+
const errorBody = e.response.text;
7460
const reason = /<Message>(.*)<\/Message>/gi.exec(errorBody);
75-
7661
throw new PubNubError(reason ? `Upload to bucket failed: ${reason[1]}` : 'Upload to bucket failed.', e);
7762
} else {
7863
throw new PubNubError('Upload to bucket failed.', e);

0 commit comments

Comments
 (0)