fix response parsing (#2614)

* fix response parsing

* rfc: better parseResponse function
This commit is contained in:
Will Nelson
2018-06-20 15:11:47 -07:00
committed by Crawl
parent 99a9a813d7
commit 594363a05e

View File

@@ -1,5 +1,11 @@
const DiscordAPIError = require('../DiscordAPIError'); const DiscordAPIError = require('../DiscordAPIError');
const { Events: { RATE_LIMIT } } = require('../../util/Constants'); const { Events: { RATE_LIMIT }, browser } = require('../../util/Constants');
function parseResponse(res) {
if (res.headers.get('content-type').startsWith('application/json')) return res.json();
if (browser) return res.blob();
return res.buffer();
}
class RequestHandler { class RequestHandler {
constructor(manager, handler) { constructor(manager, handler) {
@@ -77,7 +83,7 @@ class RequestHandler {
} }
if (res.ok) { if (res.ok) {
res.json().then(item.resolve, item.reject); parseResponse(res).then(item.resolve, item.reject);
finish(); finish();
return; return;
} }
@@ -95,7 +101,7 @@ class RequestHandler {
finish(1e3 + this.client.options.restTimeOffset); finish(1e3 + this.client.options.restTimeOffset);
} }
} else { } else {
res.json().then(data => { parseResponse(res).then(data => {
item.reject(res.status >= 400 && res.status < 500 ? item.reject(res.status >= 400 && res.status < 500 ?
new DiscordAPIError(item.path, data, item.method) : res); new DiscordAPIError(item.path, data, item.method) : res);
}, item.reject); }, item.reject);