From ec58afa716f7edfb9845a2dc8a563de3cec666be Mon Sep 17 00:00:00 2001 From: Ewout Stortenbeker Date: Tue, 13 Oct 2020 09:50:20 +0200 Subject: [PATCH] Handle oauth profile picture fetch error --- src/acebase-server.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/acebase-server.js b/src/acebase-server.js index 4c5b469..e4a47da 100644 --- a/src/acebase-server.js +++ b/src/acebase-server.js @@ -1756,7 +1756,8 @@ class AceBaseServer extends EventEmitter { const best = user_details.picture.sort((a,b) => a.width * a.height > b.width * b.height ? -1 : 1)[0] // TODO: Let client do this instead: const { fetch } = require('./oauth-providers/simple-fetch'); - await fetch(best.url).then(async response => { + await fetch(best.url) + .then(async response => { const contentType = response.headers.get('Content-Type'); if (contentType === 'image/png') { //state.provider === 'google' && // Don't accept image/png, because it's probably a placeholder image. Google does this by creating a png with people's initials @@ -1767,6 +1768,10 @@ class AceBaseServer extends EventEmitter { let buff = new Buffer.from(image); best.url = `data:${contentType};base64,${buff.toString('base64')}`; user_details.picture = [best]; // Only keep the best one + }) + .catch(err => { + this.debug.warn(`Could not fetch profile picture from "${best.url}": `, err); + user_details.picture = null; }); }