diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-04-03 02:12:13 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-03 02:12:13 +0900 |
| commit | b851402db1a33387de5d37be2e44bfa23680e56e (patch) | |
| tree | 2cb76aee965c1bd3abc7f1a773e0af3f025e5aa1 /src/remote | |
| parent | Use index (diff) | |
| parent | Deliver posts to remote followers (diff) | |
| download | misskey-b851402db1a33387de5d37be2e44bfa23680e56e.tar.gz misskey-b851402db1a33387de5d37be2e44bfa23680e56e.tar.bz2 misskey-b851402db1a33387de5d37be2e44bfa23680e56e.zip | |
Merge pull request #1376 from akihikodaki/misc
Misc
Diffstat (limited to 'src/remote')
| -rw-r--r-- | src/remote/activitypub/create.ts | 3 | ||||
| -rw-r--r-- | src/remote/request.ts | 35 |
2 files changed, 36 insertions, 2 deletions
diff --git a/src/remote/activitypub/create.ts b/src/remote/activitypub/create.ts index dd3f7b0227..f70f56b79f 100644 --- a/src/remote/activitypub/create.ts +++ b/src/remote/activitypub/create.ts @@ -1,6 +1,5 @@ import { JSDOM } from 'jsdom'; import config from '../../config'; -import { pack as packPost } from '../../models/post'; import RemoteUserObject, { IRemoteUserObject } from '../../models/remote-user-object'; import { IRemoteUser } from '../../models/user'; import uploadFromUrl from '../../drive/upload-from-url'; @@ -69,7 +68,7 @@ class Creator { const promises = []; if (this.distribute) { - promises.push(distributePost(this.actor, inserted.mentions, packPost(inserted))); + promises.push(distributePost(this.actor, inserted.mentions, inserted)); } // Register to search database diff --git a/src/remote/request.ts b/src/remote/request.ts new file mode 100644 index 0000000000..72262cbf61 --- /dev/null +++ b/src/remote/request.ts @@ -0,0 +1,35 @@ +import { request } from 'https'; +import { sign } from 'http-signature'; +import { URL } from 'url'; +import config from '../config'; + +export default ({ account, username }, url, object) => new Promise((resolve, reject) => { + const { protocol, hostname, port, pathname, search } = new URL(url); + + const req = request({ + protocol, + hostname, + port, + method: 'POST', + path: pathname + search, + }, res => { + res.on('end', () => { + if (res.statusCode >= 200 && res.statusCode < 300) { + resolve(); + } else { + reject(res); + } + }); + + res.on('data', () => {}); + res.on('error', reject); + }); + + sign(req, { + authorizationHeaderName: 'Signature', + key: account.keypair, + keyId: `acct:${username}@${config.host}` + }); + + req.end(JSON.stringify(object)); +}); |