diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-02 20:16:13 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-03 02:10:43 +0900 |
| commit | 32c008d0087eae2a2b32f050fd2ae126a3e2c732 (patch) | |
| tree | 492ee92b3c35af6a243c38e5a4fccfccdad63c7b /src/processor/http/follow.ts | |
| parent | Fix job processor interfaces (diff) | |
| download | sharkey-32c008d0087eae2a2b32f050fd2ae126a3e2c732.tar.gz sharkey-32c008d0087eae2a2b32f050fd2ae126a3e2c732.tar.bz2 sharkey-32c008d0087eae2a2b32f050fd2ae126a3e2c732.zip | |
Deliver posts to remote followers
Diffstat (limited to 'src/processor/http/follow.ts')
| -rw-r--r-- | src/processor/http/follow.ts | 46 |
1 files changed, 4 insertions, 42 deletions
diff --git a/src/processor/http/follow.ts b/src/processor/http/follow.ts index 6b2a39d517..8bf890efbc 100644 --- a/src/processor/http/follow.ts +++ b/src/processor/http/follow.ts @@ -1,6 +1,3 @@ -import { request } from 'https'; -import { sign } from 'http-signature'; -import { URL } from 'url'; import User, { isLocalUser, pack as packUser } from '../../models/user'; import Following from '../../models/following'; import FollowingLog from '../../models/following-log'; @@ -9,7 +6,7 @@ import event from '../../publishers/stream'; import notify from '../../publishers/notify'; import context from '../../remote/activitypub/renderer/context'; import render from '../../remote/activitypub/renderer/follow'; -import config from '../../config'; +import request from '../../remote/request'; export default ({ data }) => Following.findOne({ _id: data.following }).then(({ followerId, followeeId }) => { const promisedFollower = User.findOne({ _id: followerId }); @@ -60,45 +57,10 @@ export default ({ data }) => Following.findOne({ _id: data.following }).then(({ followeeEvent = packUser(follower, followee) .then(packed => event(followee._id, 'followed', packed)); } else if (isLocalUser(follower)) { - followeeEvent = new Promise((resolve, reject) => { - const { - protocol, - hostname, - port, - pathname, - search - } = new URL(followee.account.inbox); + const rendered = render(follower, followee); + rendered['@context'] = context; - const req = request({ - protocol, - hostname, - port, - method: 'POST', - path: pathname + search, - }, res => { - res.on('close', () => { - if (res.statusCode >= 200 && res.statusCode < 300) { - resolve(); - } else { - reject(res); - } - }); - - res.on('data', () => {}); - res.on('error', reject); - }); - - sign(req, { - authorizationHeaderName: 'Signature', - key: follower.account.keypair, - keyId: `acct:${follower.username}@${config.host}` - }); - - const rendered = render(follower, followee); - rendered['@context'] = context; - - req.end(JSON.stringify(rendered)); - }); + followeeEvent = request(follower, followee.account.inbox, rendered); } return Promise.all([followerEvent, followeeEvent]); |