]>
Commit | Line | Data |
---|---|---|
1 | import { activityPubContextify } from '@server/helpers/activitypub' | |
2 | import { buildDigest } from '@server/helpers/peertube-crypto' | |
3 | import { doRequest } from '@server/helpers/requests' | |
4 | import { ACTIVITY_PUB, HTTP_SIGNATURE } from '@server/initializers/constants' | |
5 | ||
6 | export function makePOSTAPRequest (url: string, body: any, httpSignature: any, headers: any) { | |
7 | const options = { | |
8 | method: 'POST' as 'POST', | |
9 | json: body, | |
10 | httpSignature, | |
11 | headers | |
12 | } | |
13 | ||
14 | return doRequest(url, options) | |
15 | } | |
16 | ||
17 | export async function makeFollowRequest (to: { url: string }, by: { url: string, privateKey }) { | |
18 | const follow = { | |
19 | type: 'Follow', | |
20 | id: by.url + '/' + new Date().getTime(), | |
21 | actor: by.url, | |
22 | object: to.url | |
23 | } | |
24 | ||
25 | const body = activityPubContextify(follow) | |
26 | ||
27 | const httpSignature = { | |
28 | algorithm: HTTP_SIGNATURE.ALGORITHM, | |
29 | authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, | |
30 | keyId: by.url, | |
31 | key: by.privateKey, | |
32 | headers: HTTP_SIGNATURE.HEADERS_TO_SIGN | |
33 | } | |
34 | const headers = { | |
35 | 'digest': buildDigest(body), | |
36 | 'content-type': 'application/activity+json', | |
37 | 'accept': ACTIVITY_PUB.ACCEPT_HEADER | |
38 | } | |
39 | ||
40 | return makePOSTAPRequest(to.url + '/inbox', body, httpSignature, headers) | |
41 | } |