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/request.ts | |
| 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/request.ts')
| -rw-r--r-- | src/remote/request.ts | 35 |
1 files changed, 35 insertions, 0 deletions
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)); +}); |