diff options
author | Chocobozzz <me@florianbigard.com> | 2022-03-24 13:36:47 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2022-04-15 09:49:35 +0200 |
commit | b211106695bb82f6c32e53306081b5262c3d109d (patch) | |
tree | fa187de1c33b0956665f5362e29af6b0f6d8bb57 /shared/models/activitypub | |
parent | 69d48ee30c9d47cddf0c3c047dc99a99dcb6e894 (diff) | |
download | PeerTube-b211106695bb82f6c32e53306081b5262c3d109d.tar.gz PeerTube-b211106695bb82f6c32e53306081b5262c3d109d.tar.zst PeerTube-b211106695bb82f6c32e53306081b5262c3d109d.zip |
Support video views/viewers stats in server
* Add "currentTime" and "event" body params to view endpoint
* Merge watching and view endpoints
* Introduce WatchAction AP activity
* Add tables to store viewer information of local videos
* Add endpoints to fetch video views/viewers stats of local videos
* Refactor views/viewers handlers
* Support "views" and "viewers" counters for both VOD and live videos
Diffstat (limited to 'shared/models/activitypub')
-rw-r--r-- | shared/models/activitypub/activity.ts | 8 | ||||
-rw-r--r-- | shared/models/activitypub/context.ts | 3 | ||||
-rw-r--r-- | shared/models/activitypub/objects/index.ts | 1 | ||||
-rw-r--r-- | shared/models/activitypub/objects/watch-action-object.ts | 22 |
4 files changed, 30 insertions, 4 deletions
diff --git a/shared/models/activitypub/activity.ts b/shared/models/activitypub/activity.ts index d6284e283..fd5d38316 100644 --- a/shared/models/activitypub/activity.ts +++ b/shared/models/activitypub/activity.ts | |||
@@ -1,6 +1,6 @@ | |||
1 | import { ActivityPubActor } from './activitypub-actor' | 1 | import { ActivityPubActor } from './activitypub-actor' |
2 | import { ActivityPubSignature } from './activitypub-signature' | 2 | import { ActivityPubSignature } from './activitypub-signature' |
3 | import { ActivityFlagReasonObject, CacheFileObject, VideoObject } from './objects' | 3 | import { ActivityFlagReasonObject, CacheFileObject, VideoObject, WatchActionObject } from './objects' |
4 | import { AbuseObject } from './objects/abuse-object' | 4 | import { AbuseObject } from './objects/abuse-object' |
5 | import { DislikeObject } from './objects/dislike-object' | 5 | import { DislikeObject } from './objects/dislike-object' |
6 | import { APObject } from './objects/object.model' | 6 | import { APObject } from './objects/object.model' |
@@ -52,7 +52,7 @@ export interface BaseActivity { | |||
52 | 52 | ||
53 | export interface ActivityCreate extends BaseActivity { | 53 | export interface ActivityCreate extends BaseActivity { |
54 | type: 'Create' | 54 | type: 'Create' |
55 | object: VideoObject | AbuseObject | DislikeObject | VideoCommentObject | CacheFileObject | PlaylistObject | 55 | object: VideoObject | AbuseObject | DislikeObject | VideoCommentObject | CacheFileObject | PlaylistObject | WatchActionObject |
56 | } | 56 | } |
57 | 57 | ||
58 | export interface ActivityUpdate extends BaseActivity { | 58 | export interface ActivityUpdate extends BaseActivity { |
@@ -99,7 +99,9 @@ export interface ActivityView extends BaseActivity { | |||
99 | type: 'View' | 99 | type: 'View' |
100 | actor: string | 100 | actor: string |
101 | object: APObject | 101 | object: APObject |
102 | expires: string | 102 | |
103 | // If sending a "viewer" event | ||
104 | expires?: string | ||
103 | } | 105 | } |
104 | 106 | ||
105 | export interface ActivityDislike extends BaseActivity { | 107 | export interface ActivityDislike extends BaseActivity { |
diff --git a/shared/models/activitypub/context.ts b/shared/models/activitypub/context.ts index 4ada3b083..e9df38207 100644 --- a/shared/models/activitypub/context.ts +++ b/shared/models/activitypub/context.ts | |||
@@ -12,4 +12,5 @@ export type ContextType = | |||
12 | 'Rate' | | 12 | 'Rate' | |
13 | 'Flag' | | 13 | 'Flag' | |
14 | 'Actor' | | 14 | 'Actor' | |
15 | 'Collection' | 15 | 'Collection' | |
16 | 'WatchAction' | ||
diff --git a/shared/models/activitypub/objects/index.ts b/shared/models/activitypub/objects/index.ts index 9e2c6b728..47a8e847a 100644 --- a/shared/models/activitypub/objects/index.ts +++ b/shared/models/activitypub/objects/index.ts | |||
@@ -8,3 +8,4 @@ export * from './playlist-object' | |||
8 | export * from './video-comment-object' | 8 | export * from './video-comment-object' |
9 | export * from './video-torrent-object' | 9 | export * from './video-torrent-object' |
10 | export * from './view-object' | 10 | export * from './view-object' |
11 | export * from './watch-action-object' | ||
diff --git a/shared/models/activitypub/objects/watch-action-object.ts b/shared/models/activitypub/objects/watch-action-object.ts new file mode 100644 index 000000000..ed336602f --- /dev/null +++ b/shared/models/activitypub/objects/watch-action-object.ts | |||
@@ -0,0 +1,22 @@ | |||
1 | export interface WatchActionObject { | ||
2 | id: string | ||
3 | type: 'WatchAction' | ||
4 | |||
5 | startTime: string | ||
6 | endTime: string | ||
7 | |||
8 | location?: { | ||
9 | addressCountry: string | ||
10 | } | ||
11 | |||
12 | uuid: string | ||
13 | object: string | ||
14 | actionStatus: 'CompletedActionStatus' | ||
15 | |||
16 | duration: string | ||
17 | |||
18 | watchSections: { | ||
19 | startTimestamp: number | ||
20 | endTimestamp: number | ||
21 | }[] | ||
22 | } | ||