@uppy/xhr-upload
Advanced tools
Comparing version
@@ -17,2 +17,3 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
Provider = _require2.Provider, | ||
RequestClient = _require2.RequestClient, | ||
Socket = _require2.Socket; | ||
@@ -98,2 +99,11 @@ | ||
return new Error('Upload error'); | ||
}, | ||
/** | ||
* @param {number} status the response status code | ||
* @param {string} responseText the response body string | ||
* @param {XMLHttpRequest | respObj} response the response object (XHR or similar) | ||
*/ | ||
validateStatus: function validateStatus(status, responseText, response) { | ||
return status >= 200 && status < 300; | ||
} | ||
@@ -252,3 +262,3 @@ }; | ||
if (ev.target.status >= 200 && ev.target.status < 300) { | ||
if (opts.validateStatus(ev.target.status, xhr.responseText, xhr)) { | ||
var body = opts.getResponseData(xhr.responseText, xhr); | ||
@@ -337,4 +347,5 @@ var uploadURL = body[opts.responseUrlFieldName]; | ||
var provider = new Provider(_this3.uppy, file.remote.providerOptions); | ||
provider.post(file.remote.url, _extends({}, file.remote.body, { | ||
var Client = file.remote.providerOptions.provider ? Provider : RequestClient; | ||
var client = new Client(_this3.uppy, file.remote.providerOptions); | ||
client.post(file.remote.url, _extends({}, file.remote.body, { | ||
endpoint: opts.endpoint, | ||
@@ -428,3 +439,3 @@ size: file.data.size, | ||
if (ev.target.status >= 200 && ev.target.status < 300) { | ||
if (_this4.opts.validateStatus(ev.target.status, xhr.responseText, xhr)) { | ||
var body = _this4.opts.getResponseData(xhr.responseText, xhr); | ||
@@ -431,0 +442,0 @@ var uploadResp = { |
{ | ||
"name": "@uppy/xhr-upload", | ||
"description": "Plain and simple classic HTML multipart form uploads with Uppy, as well as uploads using the HTTP PUT method.", | ||
"version": "0.30.3", | ||
"version": "0.30.4", | ||
"license": "MIT", | ||
@@ -27,8 +27,8 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@uppy/companion-client": "0.28.3", | ||
"@uppy/utils": "0.30.3", | ||
"@uppy/companion-client": "0.28.4", | ||
"@uppy/utils": "0.30.4", | ||
"cuid": "^2.1.1" | ||
}, | ||
"devDependencies": { | ||
"@uppy/core": "0.30.3" | ||
"@uppy/core": "0.30.4" | ||
}, | ||
@@ -38,3 +38,3 @@ "peerDependencies": { | ||
}, | ||
"gitHead": "27899d944f0ffb551d0473955236734c24eb4fff" | ||
"gitHead": "7ae8af44abdd42eef71c46b831b2e3dadb00237f" | ||
} |
const { Plugin } = require('@uppy/core') | ||
const cuid = require('cuid') | ||
const Translator = require('@uppy/utils/lib/Translator') | ||
const { Provider, Socket } = require('@uppy/companion-client') | ||
const { Provider, RequestClient, Socket } = require('@uppy/companion-client') | ||
const emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress') | ||
@@ -78,2 +78,10 @@ const getSocketHost = require('@uppy/utils/lib/getSocketHost') | ||
return new Error('Upload error') | ||
}, | ||
/** | ||
* @param {number} status the response status code | ||
* @param {string} responseText the response body string | ||
* @param {XMLHttpRequest | respObj} response the response object (XHR or similar) | ||
*/ | ||
validateStatus (status, responseText, response) { | ||
return status >= 200 && status < 300 | ||
} | ||
@@ -232,3 +240,3 @@ } | ||
if (ev.target.status >= 200 && ev.target.status < 300) { | ||
if (opts.validateStatus(ev.target.status, xhr.responseText, xhr)) { | ||
const body = opts.getResponseData(xhr.responseText, xhr) | ||
@@ -316,4 +324,5 @@ const uploadURL = body[opts.responseUrlFieldName] | ||
const provider = new Provider(this.uppy, file.remote.providerOptions) | ||
provider.post( | ||
const Client = file.remote.providerOptions.provider ? Provider : RequestClient | ||
const client = new Client(this.uppy, file.remote.providerOptions) | ||
client.post( | ||
file.remote.url, | ||
@@ -409,3 +418,3 @@ Object.assign({}, file.remote.body, { | ||
if (ev.target.status >= 200 && ev.target.status < 300) { | ||
if (this.opts.validateStatus(ev.target.status, xhr.responseText, xhr)) { | ||
const body = this.opts.getResponseData(xhr.responseText, xhr) | ||
@@ -412,0 +421,0 @@ const uploadResp = { |
@@ -37,2 +37,44 @@ const nock = require('nock') | ||
}) | ||
describe('validateStatus', () => { | ||
it('emit upload error under status code 200', () => { | ||
nock('https://fake-endpoint.uppy.io') | ||
.defaultReplyHeaders({ | ||
'access-control-allow-method': 'POST', | ||
'access-control-allow-origin': '*' | ||
}) | ||
.options('/').reply(200, {}) | ||
.post('/').reply(200, { | ||
code: 40000, | ||
message: 'custom upload error' | ||
}) | ||
const core = new Core() | ||
const validateStatus = jest.fn(function (status, responseText, response) { | ||
return JSON.parse(responseText).code !== 40000 | ||
}) | ||
core.use(XHRUpload, { | ||
id: 'XHRUpload', | ||
endpoint: 'https://fake-endpoint.uppy.io', | ||
some: 'option', | ||
validateStatus, | ||
getResponseError (responseText, xhr) { | ||
return JSON.parse(responseText).message | ||
} | ||
}) | ||
core.addFile({ | ||
name: 'test.jpg', | ||
data: new Blob([Buffer.alloc(8192)]) | ||
}) | ||
return core.upload().then(result => { | ||
expect(validateStatus).toHaveBeenCalled() | ||
expect(result.failed.length).toBeGreaterThan(0) | ||
result.failed.forEach(file => { | ||
expect(file.error).toEqual('custom upload error') | ||
}) | ||
}) | ||
}) | ||
}) | ||
}) |
40384
5.78%1006
6.01%+ Added
+ Added
- Removed
- Removed
Updated