From 594363a05eb13a327baeb45f3e4e17b8a075c725 Mon Sep 17 00:00:00 2001 From: Will Nelson Date: Wed, 20 Jun 2018 15:11:47 -0700 Subject: [PATCH] fix response parsing (#2614) * fix response parsing * rfc: better parseResponse function --- src/rest/handlers/RequestHandler.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/rest/handlers/RequestHandler.js b/src/rest/handlers/RequestHandler.js index c3812c92d..2c5655814 100644 --- a/src/rest/handlers/RequestHandler.js +++ b/src/rest/handlers/RequestHandler.js @@ -1,5 +1,11 @@ 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 { constructor(manager, handler) { @@ -77,7 +83,7 @@ class RequestHandler { } if (res.ok) { - res.json().then(item.resolve, item.reject); + parseResponse(res).then(item.resolve, item.reject); finish(); return; } @@ -95,7 +101,7 @@ class RequestHandler { finish(1e3 + this.client.options.restTimeOffset); } } else { - res.json().then(data => { + parseResponse(res).then(data => { item.reject(res.status >= 400 && res.status < 500 ? new DiscordAPIError(item.path, data, item.method) : res); }, item.reject);