aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/activitypub/process/process-create.ts
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-11-22 16:25:03 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-11-27 19:40:53 +0100
commit40ff57078e15d5b86ee6b71e198b95d3feb78eaf (patch)
tree88031d4eac6a26597e8a1f2fc63674664e3eae26 /server/lib/activitypub/process/process-create.ts
parentc46edbc2f6ca310b2f0331f979ac6caf27f6eb92 (diff)
downloadPeerTube-40ff57078e15d5b86ee6b71e198b95d3feb78eaf.tar.gz
PeerTube-40ff57078e15d5b86ee6b71e198b95d3feb78eaf.tar.zst
PeerTube-40ff57078e15d5b86ee6b71e198b95d3feb78eaf.zip
Federate video views
Diffstat (limited to 'server/lib/activitypub/process/process-create.ts')
-rw-r--r--server/lib/activitypub/process/process-create.ts19
1 files changed, 18 insertions, 1 deletions
diff --git a/server/lib/activitypub/process/process-create.ts b/server/lib/activitypub/process/process-create.ts
index ddf7c74f6..1777733a0 100644
--- a/server/lib/activitypub/process/process-create.ts
+++ b/server/lib/activitypub/process/process-create.ts
@@ -1,9 +1,11 @@
1import { ActivityCreate, VideoChannelObject } from '../../../../shared' 1import { ActivityCreate, VideoChannelObject } from '../../../../shared'
2import { VideoAbuseObject } from '../../../../shared/models/activitypub/objects/video-abuse-object' 2import { VideoAbuseObject } from '../../../../shared/models/activitypub/objects/video-abuse-object'
3import { ViewObject } from '../../../../shared/models/activitypub/objects/view-object'
3import { logger, retryTransactionWrapper } from '../../../helpers' 4import { logger, retryTransactionWrapper } from '../../../helpers'
4import { database as db } from '../../../initializers' 5import { database as db } from '../../../initializers'
5import { AccountInstance } from '../../../models/account/account-interface' 6import { AccountInstance } from '../../../models/account/account-interface'
6import { getOrCreateAccountAndServer } from '../account' 7import { getOrCreateAccountAndServer } from '../account'
8import { sendCreateViewToVideoFollowers } from '../send/send-create'
7import { getVideoChannelActivityPubUrl } from '../url' 9import { getVideoChannelActivityPubUrl } from '../url'
8import { videoChannelActivityObjectToDBAttributes } from './misc' 10import { videoChannelActivityObjectToDBAttributes } from './misc'
9 11
@@ -12,7 +14,9 @@ async function processCreateActivity (activity: ActivityCreate) {
12 const activityType = activityObject.type 14 const activityType = activityObject.type
13 const account = await getOrCreateAccountAndServer(activity.actor) 15 const account = await getOrCreateAccountAndServer(activity.actor)
14 16
15 if (activityType === 'VideoChannel') { 17 if (activityType === 'View') {
18 return processCreateView(activityObject as ViewObject)
19 } else if (activityType === 'VideoChannel') {
16 return processCreateVideoChannel(account, activityObject as VideoChannelObject) 20 return processCreateVideoChannel(account, activityObject as VideoChannelObject)
17 } else if (activityType === 'Flag') { 21 } else if (activityType === 'Flag') {
18 return processCreateVideoAbuse(account, activityObject as VideoAbuseObject) 22 return processCreateVideoAbuse(account, activityObject as VideoAbuseObject)
@@ -30,6 +34,19 @@ export {
30 34
31// --------------------------------------------------------------------------- 35// ---------------------------------------------------------------------------
32 36
37async function processCreateView (view: ViewObject) {
38 const video = await db.Video.loadByUrlAndPopulateAccount(view.object)
39
40 if (!video) throw new Error('Unknown video ' + view.object)
41
42 const account = await db.Account.loadByUrl(view.actor)
43 if (!account) throw new Error('Unknown account ' + view.actor)
44
45 await video.increment('views')
46
47 if (video.isOwned()) await sendCreateViewToVideoFollowers(account, video, undefined)
48}
49
33function processCreateVideoChannel (account: AccountInstance, videoChannelToCreateData: VideoChannelObject) { 50function processCreateVideoChannel (account: AccountInstance, videoChannelToCreateData: VideoChannelObject) {
34 const options = { 51 const options = {
35 arguments: [ account, videoChannelToCreateData ], 52 arguments: [ account, videoChannelToCreateData ],