fix(dataresolver): ensure fetched file is convert to a buffer (#7457)

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
nev
2022-02-15 09:36:21 -08:00
committed by GitHub
parent 6d3da226d3
commit 9311fa7b42

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const { Buffer } = require('node:buffer'); const { Buffer } = require('node:buffer');
const fs = require('node:fs'); const fs = require('node:fs/promises');
const path = require('node:path'); const path = require('node:path');
const stream = require('node:stream'); const stream = require('node:stream');
const fetch = require('node-fetch'); const fetch = require('node-fetch');
@@ -67,7 +67,7 @@ class DataResolver extends null {
return image; return image;
} }
const file = await this.resolveFile(image); const file = await this.resolveFile(image);
return DataResolver.resolveBase64(file); return this.resolveBase64(file);
} }
/** /**
@@ -118,17 +118,14 @@ class DataResolver extends null {
if (typeof resource === 'string') { if (typeof resource === 'string') {
if (/^https?:\/\//.test(resource)) { if (/^https?:\/\//.test(resource)) {
const res = await fetch(resource); const res = await fetch(resource);
return res.body; return res.buffer();
} }
return new Promise((resolve, reject) => { const file = path.resolve(resource);
const file = path.resolve(resource);
fs.stat(file, (err, stats) => { const stats = await fs.stat(file);
if (err) return reject(err); if (!stats.isFile()) throw new DiscordError('FILE_NOT_FOUND', file);
if (!stats.isFile()) return reject(new DiscordError('FILE_NOT_FOUND', file)); return fs.readFile(file);
return resolve(fs.createReadStream(file));
});
});
} }
throw new TypeError('REQ_RESOURCE_TYPE'); throw new TypeError('REQ_RESOURCE_TYPE');