From 9a8cbd8278a37ee414f17d7de7c7281123484ba1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 11 Jan 2018 19:17:43 +0100 Subject: [PATCH] Activity Pub improvements --- server/initializers/constants.ts | 3 ++- server/lib/activitypub/process/process-update.ts | 6 ++++-- server/lib/activitypub/send/misc.ts | 6 +++--- server/middlewares/activitypub.ts | 1 + 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index a3c128d1f..eda3403f2 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -270,7 +270,8 @@ const SERVER_ACTOR_NAME = 'peertube' const ACTIVITY_PUB = { POTENTIAL_ACCEPT_HEADERS: [ 'application/activity+json', - 'application/ld+json' + 'application/ld+json', + 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' ], ACCEPT_HEADER: 'application/activity+json, application/ld+json', PUBLIC: 'https://www.w3.org/ns/activitystreams#Public', diff --git a/server/lib/activitypub/process/process-update.ts b/server/lib/activitypub/process/process-update.ts index a5431c76b..5439a47f2 100644 --- a/server/lib/activitypub/process/process-update.ts +++ b/server/lib/activitypub/process/process-update.ts @@ -66,17 +66,19 @@ async function updateRemoteVideo (actor: ActorModel, activity: ActivityUpdate) { const videoData = await videoActivityObjectToDBAttributes(videoChannel, videoAttributesToUpdate, activity.to, activity.cc) videoInstance.set('name', videoData.name) + videoInstance.set('uuid', videoData.uuid) + videoInstance.set('url', videoData.url) videoInstance.set('category', videoData.category) videoInstance.set('licence', videoData.licence) videoInstance.set('language', videoData.language) + videoInstance.set('description', videoData.description) videoInstance.set('nsfw', videoData.nsfw) videoInstance.set('commentsEnabled', videoData.commentsEnabled) - videoInstance.set('privacy', videoData.privacy) - videoInstance.set('description', videoData.description) videoInstance.set('duration', videoData.duration) videoInstance.set('createdAt', videoData.createdAt) videoInstance.set('updatedAt', videoData.updatedAt) videoInstance.set('views', videoData.views) + videoInstance.set('privacy', videoData.privacy) await videoInstance.save(sequelizeOptions) diff --git a/server/lib/activitypub/send/misc.ts b/server/lib/activitypub/send/misc.ts index 2a9f4cae8..261586ae4 100644 --- a/server/lib/activitypub/send/misc.ts +++ b/server/lib/activitypub/send/misc.ts @@ -166,14 +166,14 @@ async function computeFollowerUris (toActorFollower: ActorModel[], actorsExcepti const toActorFollowerIds = toActorFollower.map(a => a.id) const result = await ActorFollowModel.listAcceptedFollowerSharedInboxUrls(toActorFollowerIds, t) - const sharedInboxesException = actorsException.map(f => f.sharedInboxUrl) + const sharedInboxesException = actorsException.map(f => f.sharedInboxUrl || f.inboxUrl) return result.data.filter(sharedInbox => sharedInboxesException.indexOf(sharedInbox) === -1) } async function computeUris (toActors: ActorModel[], actorsException: ActorModel[] = []) { - const toActorSharedInboxesSet = new Set(toActors.map(a => a.sharedInboxUrl)) + const toActorSharedInboxesSet = new Set(toActors.map(a => a.sharedInboxUrl || a.inboxUrl)) - const sharedInboxesException = actorsException.map(f => f.sharedInboxUrl) + const sharedInboxesException = actorsException.map(f => f.sharedInboxUrl || f.inboxUrl) return Array.from(toActorSharedInboxesSet) .filter(sharedInbox => sharedInboxesException.indexOf(sharedInbox) === -1) } diff --git a/server/middlewares/activitypub.ts b/server/middlewares/activitypub.ts index 1488b42ab..c7102b6bf 100644 --- a/server/middlewares/activitypub.ts +++ b/server/middlewares/activitypub.ts @@ -35,6 +35,7 @@ async function checkSignature (req: Request, res: Response, next: NextFunction) function executeIfActivityPub (fun: RequestHandler | RequestHandler[]) { return (req: Request, res: Response, next: NextFunction) => { const accepted = req.accepts(ACCEPT_HEADERS) + console.log(accepted) if (accepted === false || ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS.indexOf(accepted) === -1) { return next() }