]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/activitypub/activity.ts
Federate video views
[github/Chocobozzz/PeerTube.git] / shared / models / activitypub / activity.ts
1 import { ActivityPubSignature } from './activitypub-signature'
2 import { VideoChannelObject, VideoTorrentObject } from './objects'
3 import { VideoAbuseObject } from './objects/video-abuse-object'
4 import { ViewObject } from './objects/view-object'
5
6 export type Activity = ActivityCreate | ActivityAdd | ActivityUpdate |
7 ActivityDelete | ActivityFollow | ActivityAccept | ActivityAnnounce |
8 ActivityUndo
9
10 export type ActivityType = 'Create' | 'Add' | 'Update' | 'Delete' | 'Follow' | 'Accept' | 'Announce' | 'Undo'
11
12 export interface BaseActivity {
13 '@context'?: any[]
14 id: string
15 to?: string[]
16 cc?: string[]
17 actor: string
18 type: ActivityType
19 signature?: ActivityPubSignature
20 }
21
22 export interface ActivityCreate extends BaseActivity {
23 type: 'Create'
24 object: VideoChannelObject | VideoAbuseObject | ViewObject
25 }
26
27 export interface ActivityAdd extends BaseActivity {
28 type: 'Add'
29 target: string
30 object: VideoTorrentObject
31 }
32
33 export interface ActivityUpdate extends BaseActivity {
34 type: 'Update'
35 object: VideoTorrentObject | VideoChannelObject
36 }
37
38 export interface ActivityDelete extends BaseActivity {
39 type: 'Delete'
40 }
41
42 export interface ActivityFollow extends BaseActivity {
43 type: 'Follow'
44 object: string
45 }
46
47 export interface ActivityAccept extends BaseActivity {
48 type: 'Accept'
49 }
50
51 export interface ActivityAnnounce extends BaseActivity {
52 type: 'Announce'
53 object: ActivityCreate | ActivityAdd
54 }
55
56 export interface ActivityUndo extends BaseActivity {
57 type: 'Undo',
58 object: ActivityFollow
59 }