]>
Commit | Line | Data |
---|---|---|
06aad801 | 1 | import { activityPubContextify } from '@server/helpers/activitypub' |
c55e3d72 C |
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' | |
df66d815 | 5 | |
06aad801 | 6 | export function makePOSTAPRequest (url: string, body: any, httpSignature: any, headers: any) { |
df66d815 | 7 | const options = { |
db4b15f2 | 8 | method: 'POST' as 'POST', |
df66d815 C |
9 | json: body, |
10 | httpSignature, | |
11 | headers | |
12 | } | |
13 | ||
db4b15f2 | 14 | return doRequest(url, options) |
df66d815 C |
15 | } |
16 | ||
06aad801 | 17 | export async function makeFollowRequest (to: { url: string }, by: { url: string, privateKey }) { |
df66d815 C |
18 | const follow = { |
19 | type: 'Follow', | |
e7053b1d | 20 | id: by.url + '/' + new Date().getTime(), |
df66d815 C |
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 | } | |
c55e3d72 C |
34 | const headers = { |
35 | 'digest': buildDigest(body), | |
36 | 'content-type': 'application/activity+json', | |
37 | 'accept': ACTIVITY_PUB.ACCEPT_HEADER | |
38 | } | |
df66d815 | 39 | |
e7053b1d | 40 | return makePOSTAPRequest(to.url + '/inbox', body, httpSignature, headers) |
df66d815 | 41 | } |