mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
import { doRequest } from '../../../server/helpers/requests'
 | 
						|
import { HTTP_SIGNATURE } from '../../../server/initializers/constants'
 | 
						|
import { buildGlobalHeaders } from '../../../server/lib/job-queue/handlers/utils/activitypub-http-utils'
 | 
						|
import { activityPubContextify } from '../../../server/helpers/activitypub'
 | 
						|
 | 
						|
function makePOSTAPRequest (url: string, body: any, httpSignature: any, headers: any) {
 | 
						|
  const options = {
 | 
						|
    method: 'POST' as 'POST',
 | 
						|
    json: body,
 | 
						|
    httpSignature,
 | 
						|
    headers
 | 
						|
  }
 | 
						|
 | 
						|
  return doRequest(url, options)
 | 
						|
}
 | 
						|
 | 
						|
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 = buildGlobalHeaders(body)
 | 
						|
 | 
						|
  return makePOSTAPRequest(to.url + '/inbox', body, httpSignature, headers)
 | 
						|
}
 | 
						|
 | 
						|
export {
 | 
						|
  makePOSTAPRequest,
 | 
						|
  makeFollowRequest
 | 
						|
}
 |