diff options
author | Chocobozzz <me@florianbigard.com> | 2018-01-26 12:02:18 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-01-26 13:43:34 +0100 |
commit | 7acee6f18aac99e359360fc4f2362d5405135a79 (patch) | |
tree | a8eceaba9a01b913fcfca32f17f26b4f588a633e /server/lib/activitypub/process/process-announce.ts | |
parent | d6e99e5322209a692cc3d870ddb5dcedbda69f2a (diff) | |
download | PeerTube-7acee6f18aac99e359360fc4f2362d5405135a79.tar.gz PeerTube-7acee6f18aac99e359360fc4f2362d5405135a79.tar.zst PeerTube-7acee6f18aac99e359360fc4f2362d5405135a79.zip |
Fix announce activities
Diffstat (limited to 'server/lib/activitypub/process/process-announce.ts')
-rw-r--r-- | server/lib/activitypub/process/process-announce.ts | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/server/lib/activitypub/process/process-announce.ts b/server/lib/activitypub/process/process-announce.ts index bf7d7879d..7dafc0593 100644 --- a/server/lib/activitypub/process/process-announce.ts +++ b/server/lib/activitypub/process/process-announce.ts | |||
@@ -1,6 +1,5 @@ | |||
1 | import { ActivityAnnounce } from '../../../../shared/models/activitypub' | 1 | import { ActivityAnnounce } from '../../../../shared/models/activitypub' |
2 | import { retryTransactionWrapper } from '../../../helpers/database-utils' | 2 | import { retryTransactionWrapper } from '../../../helpers/database-utils' |
3 | import { logger } from '../../../helpers/logger' | ||
4 | import { sequelizeTypescript } from '../../../initializers' | 3 | import { sequelizeTypescript } from '../../../initializers' |
5 | import { ActorModel } from '../../../models/activitypub/actor' | 4 | import { ActorModel } from '../../../models/activitypub/actor' |
6 | import { VideoModel } from '../../../models/video/video' | 5 | import { VideoModel } from '../../../models/video/video' |
@@ -8,24 +7,11 @@ import { VideoShareModel } from '../../../models/video/video-share' | |||
8 | import { getOrCreateActorAndServerAndModel } from '../actor' | 7 | import { getOrCreateActorAndServerAndModel } from '../actor' |
9 | import { forwardActivity } from '../send/misc' | 8 | import { forwardActivity } from '../send/misc' |
10 | import { getOrCreateAccountAndVideoAndChannel } from '../videos' | 9 | import { getOrCreateAccountAndVideoAndChannel } from '../videos' |
11 | import { processCreateActivity } from './process-create' | ||
12 | 10 | ||
13 | async function processAnnounceActivity (activity: ActivityAnnounce) { | 11 | async function processAnnounceActivity (activity: ActivityAnnounce) { |
14 | const announcedActivity = activity.object | ||
15 | const actorAnnouncer = await getOrCreateActorAndServerAndModel(activity.actor) | 12 | const actorAnnouncer = await getOrCreateActorAndServerAndModel(activity.actor) |
16 | 13 | ||
17 | if (typeof announcedActivity === 'string') { | 14 | return processVideoShare(actorAnnouncer, activity) |
18 | return processVideoShare(actorAnnouncer, activity) | ||
19 | } else if (announcedActivity.type === 'Create' && announcedActivity.object.type === 'Video') { | ||
20 | return processVideoShare(actorAnnouncer, activity) | ||
21 | } | ||
22 | |||
23 | logger.warn( | ||
24 | 'Unknown activity object type %s -> %s when announcing activity.', announcedActivity.type, announcedActivity.object.type, | ||
25 | { activity: activity.id } | ||
26 | ) | ||
27 | |||
28 | return undefined | ||
29 | } | 15 | } |
30 | 16 | ||
31 | // --------------------------------------------------------------------------- | 17 | // --------------------------------------------------------------------------- |
@@ -46,15 +32,11 @@ function processVideoShare (actorAnnouncer: ActorModel, activity: ActivityAnnoun | |||
46 | } | 32 | } |
47 | 33 | ||
48 | async function shareVideo (actorAnnouncer: ActorModel, activity: ActivityAnnounce) { | 34 | async function shareVideo (actorAnnouncer: ActorModel, activity: ActivityAnnounce) { |
49 | const announced = activity.object | 35 | const objectUri = typeof activity.object === 'string' ? activity.object : activity.object.id |
50 | let video: VideoModel | 36 | let video: VideoModel |
51 | 37 | ||
52 | if (typeof announced === 'string') { | 38 | const res = await getOrCreateAccountAndVideoAndChannel(objectUri) |
53 | const res = await getOrCreateAccountAndVideoAndChannel(announced) | 39 | video = res.video |
54 | video = res.video | ||
55 | } else { | ||
56 | video = await processCreateActivity(announced) | ||
57 | } | ||
58 | 40 | ||
59 | return sequelizeTypescript.transaction(async t => { | 41 | return sequelizeTypescript.transaction(async t => { |
60 | // Add share entry | 42 | // Add share entry |