mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import { activityPubContextify } from '@server/helpers/activitypub'
 | |
| import { buildDigest } from '@server/helpers/peertube-crypto'
 | |
| import { doRequest } from '@server/helpers/requests'
 | |
| import { ACTIVITY_PUB, HTTP_SIGNATURE } from '@server/initializers/constants'
 | |
| 
 | |
| export function makePOSTAPRequest (url: string, body: any, httpSignature: any, headers: any) {
 | |
|   const options = {
 | |
|     method: 'POST' as 'POST',
 | |
|     json: body,
 | |
|     httpSignature,
 | |
|     headers
 | |
|   }
 | |
| 
 | |
|   return doRequest(url, options)
 | |
| }
 | |
| 
 | |
| export async function makeFollowRequest (to: { url: string }, by: { url: string, privateKey }) {
 | |
|   const follow = {
 | |
|     type: 'Follow',
 | |
|     id: by.url + '/' + new Date().getTime(),
 | |
|     actor: by.url,
 | |
|     object: to.url
 | |
|   }
 | |
| 
 | |
|   const body = activityPubContextify(follow)
 | |
| 
 | |
|   const httpSignature = {
 | |
|     algorithm: HTTP_SIGNATURE.ALGORITHM,
 | |
|     authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME,
 | |
|     keyId: by.url,
 | |
|     key: by.privateKey,
 | |
|     headers: HTTP_SIGNATURE.HEADERS_TO_SIGN
 | |
|   }
 | |
|   const headers = {
 | |
|     'digest': buildDigest(body),
 | |
|     'content-type': 'application/activity+json',
 | |
|     'accept': ACTIVITY_PUB.ACCEPT_HEADER
 | |
|   }
 | |
| 
 | |
|   return makePOSTAPRequest(to.url + '/inbox', body, httpSignature, headers)
 | |
| }
 |