diff --git a/src/activitypub/helpers.js b/src/activitypub/helpers.js index aa28652d36..c28f3bb1b8 100644 --- a/src/activitypub/helpers.js +++ b/src/activitypub/helpers.js @@ -1,11 +1,11 @@ 'use strict'; -const request = require('request-promise-native'); const { generateKeyPairSync } = require('crypto'); const winston = require('winston'); const nconf = require('nconf'); const validator = require('validator'); +const request = require('../request'); const db = require('../database'); const ttl = require('../cache/ttl'); const user = require('../user'); @@ -25,24 +25,20 @@ Helpers.query = async (id) => { } // Make a webfinger query to retrieve routing information - const response = await request(`https://${hostname}/.well-known/webfinger?resource=acct:${id}`, { - simple: false, - resolveWithFullResponse: true, - json: true, - }); + const { response, body } = await request.get(`https://${hostname}/.well-known/webfinger?resource=acct:${id}`); - if (response.statusCode !== 200 || !response.body.hasOwnProperty('links')) { + if (response.statusCode !== 200 || !body.hasOwnProperty('links')) { return false; } // Parse links to find actor endpoint - let actorUri = response.body.links.filter(link => link.type === 'application/activity+json' && link.rel === 'self'); + let actorUri = body.links.filter(link => link.type === 'application/activity+json' && link.rel === 'self'); if (actorUri.length) { actorUri = actorUri.pop(); ({ href: actorUri } = actorUri); } - const { publicKey } = response.body; + const { publicKey } = body; webfingerCache.set(id, { username, hostname, actorUri, publicKey }); return { username, hostname, actorUri, publicKey }; diff --git a/src/activitypub/index.js b/src/activitypub/index.js index 81f3334e04..01a25bebd2 100644 --- a/src/activitypub/index.js +++ b/src/activitypub/index.js @@ -1,10 +1,10 @@ 'use strict'; -const request = require('request-promise-native'); const nconf = require('nconf'); const { createHash, createSign, createVerify } = require('crypto'); const validator = require('validator'); +const request = require('../request'); const db = require('../database'); const user = require('../user'); const ttl = require('../cache/ttl'); @@ -39,12 +39,10 @@ ActivityPub.getActor = async (input) => { return actorCache.get(uri); } - const actor = await request({ - uri, + const { body: actor } = await request.get(uri, { headers: { Accept: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', }, - json: true, }); actor.hostname = new URL(uri).hostname; @@ -84,7 +82,7 @@ ActivityPub.getPrivateKey = async (uid) => { ActivityPub.fetchPublicKey = async (uri) => { // Used for retrieving the public key from the passed-in keyId uri - const { publicKey } = await request({ + const { body } = await request.get({ uri, headers: { Accept: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', @@ -92,7 +90,7 @@ ActivityPub.fetchPublicKey = async (uri) => { json: true, }); - return publicKey; + return body.publicKey; }; ActivityPub.sign = async (uid, url, payload) => { @@ -193,8 +191,7 @@ ActivityPub.send = async (uid, targets, payload) => { await Promise.all(inboxes.map(async (uri) => { const { date, digest, signature } = await ActivityPub.sign(uid, uri, payload); - const response = await request(uri, { - method: 'post', + const response = await request.post(uri, { headers: { date, digest, @@ -202,10 +199,7 @@ ActivityPub.send = async (uid, targets, payload) => { 'content-type': 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', accept: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', }, - json: true, body: payload, - simple: false, - resolveWithFullResponse: true, }); if (response.statusCode !== 201) {