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