Playlist server API

This commit is contained in:
Chocobozzz 2019-02-26 10:55:40 +01:00 committed by Chocobozzz
parent b427febb4d
commit 418d092afa
63 changed files with 2758 additions and 226 deletions

View file

@ -44,6 +44,7 @@ async function getOrCreateActorAndServerAndModel (
) {
const actorUrl = getAPId(activityActor)
let created = false
let accountPlaylistsUrl: string
let actor = await fetchActorByUrl(actorUrl, fetchType)
// Orphan actor (not associated to an account of channel) so recreate it
@ -70,7 +71,8 @@ async function getOrCreateActorAndServerAndModel (
try {
// Don't recurse another time
ownerActor = await getOrCreateActorAndServerAndModel(accountAttributedTo.id, 'all', false)
const recurseIfNeeded = false
ownerActor = await getOrCreateActorAndServerAndModel(accountAttributedTo.id, 'all', recurseIfNeeded)
} catch (err) {
logger.error('Cannot get or create account attributed to video channel ' + actor.url)
throw new Error(err)
@ -79,6 +81,7 @@ async function getOrCreateActorAndServerAndModel (
actor = await retryTransactionWrapper(saveActorAndServerAndModelIfNotExist, result, ownerActor)
created = true
accountPlaylistsUrl = result.playlists
}
if (actor.Account) actor.Account.Actor = actor
@ -92,6 +95,12 @@ async function getOrCreateActorAndServerAndModel (
await JobQueue.Instance.createJob({ type: 'activitypub-http-fetcher', payload })
}
// We created a new account: fetch the playlists
if (created === true && actor.Account && accountPlaylistsUrl) {
const payload = { uri: accountPlaylistsUrl, accountId: actor.Account.id, type: 'account-playlists' as 'account-playlists' }
await JobQueue.Instance.createJob({ type: 'activitypub-http-fetcher', payload })
}
return actorRefreshed
}
@ -342,6 +351,7 @@ type FetchRemoteActorResult = {
name: string
summary: string
support?: string
playlists?: string
avatarName?: string
attributedTo: ActivityPubAttributedTo[]
}
@ -398,6 +408,7 @@ async function fetchRemoteActor (actorUrl: string): Promise<{ statusCode?: numbe
avatarName,
summary: actorJSON.summary,
support: actorJSON.support,
playlists: actorJSON.playlists,
attributedTo: actorJSON.attributedTo
}
}