Continue activitypub

This commit is contained in:
Chocobozzz 2017-11-10 14:34:45 +01:00
parent e4f97babf7
commit 0d0e8dd090
No known key found for this signature in database
GPG key ID: 583A612D890159BE
27 changed files with 1039 additions and 1086 deletions

View file

@ -2,10 +2,48 @@ import * as url from 'url'
import { database as db } from '../initializers'
import { logger } from './logger'
import { doRequest } from './requests'
import { doRequest, doRequestAndSaveToFile } from './requests'
import { isRemoteAccountValid } from './custom-validators'
import { ActivityPubActor } from '../../shared/models/activitypub/activitypub-actor'
import { ResultList } from '../../shared/models/result-list.model'
import { CONFIG } from '../initializers/constants'
import { VideoInstance } from '../models/video/video-interface'
import { ActivityIconObject } from '../../shared/index'
import { join } from 'path'
function generateThumbnailFromUrl (video: VideoInstance, icon: ActivityIconObject) {
const thumbnailName = video.getThumbnailName()
const thumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, thumbnailName)
const options = {
method: 'GET',
uri: icon.url
}
return doRequestAndSaveToFile(options, thumbnailPath)
}
function getActivityPubUrl (type: 'video' | 'videoChannel', uuid: string) {
if (type === 'video') return CONFIG.WEBSERVER.URL + '/videos/watch/' + uuid
else if (type === 'videoChannel') return CONFIG.WEBSERVER.URL + '/video-channels/' + uuid
return ''
}
async function getOrCreateAccount (accountUrl: string) {
let account = await db.Account.loadByUrl(accountUrl)
// We don't have this account in our database, fetch it on remote
if (!account) {
const { account } = await fetchRemoteAccountAndCreatePod(accountUrl)
if (!account) throw new Error('Cannot fetch remote account.')
// Save our new account in database
await account.save()
}
return account
}
async function fetchRemoteAccountAndCreatePod (accountUrl: string) {
const options = {
@ -100,7 +138,10 @@ function activityPubCollectionPagination (url: string, page: number, result: Res
export {
fetchRemoteAccountAndCreatePod,
activityPubContextify,
activityPubCollectionPagination
activityPubCollectionPagination,
getActivityPubUrl,
generateThumbnailFromUrl,
getOrCreateAccount
}
// ---------------------------------------------------------------------------