aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/models/activitypub/objects/common-objects.ts
blob: 9bf9943799a36494e839da61ad5b2088bb2fd75e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import { AbusePredefinedReasonsString } from '../../moderation/abuse/abuse-reason.model'

export interface ActivityIdentifierObject {
  identifier: string
  name: string
  url?: string
}

export interface ActivityIconObject {
  type: 'Image'
  url: string
  mediaType: string
  width?: number
  height?: number
}

export type ActivityVideoUrlObject = {
  type: 'Link'
  mediaType: 'video/mp4' | 'video/webm' | 'video/ogg'
  href: string
  height: number
  size: number
  fps: number
}

export type ActivityPlaylistSegmentHashesObject = {
  type: 'Link'
  name: 'sha256'
  mediaType: 'application/json'
  href: string
}

export type ActivityVideoFileMetadataUrlObject = {
  type: 'Link'
  rel: [ 'metadata', any ]
  mediaType: 'application/json'
  height: number
  href: string
  fps: number
}

export type ActivityTrackerUrlObject = {
  type: 'Link'
  rel: [ 'tracker', 'websocket' | 'http' ]
  name: string
  href: string
}

export type ActivityStreamingPlaylistInfohashesObject = {
  type: 'Infohash'
  name: string
}

export type ActivityPlaylistUrlObject = {
  type: 'Link'
  mediaType: 'application/x-mpegURL'
  href: string
  tag?: ActivityTagObject[]
}

export type ActivityBitTorrentUrlObject = {
  type: 'Link'
  mediaType: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet'
  href: string
  height: number
}

export type ActivityMagnetUrlObject = {
  type: 'Link'
  mediaType: 'application/x-bittorrent;x-scheme-handler/magnet'
  href: string
  height: number
}

export type ActivityHtmlUrlObject = {
  type: 'Link'
  mediaType: 'text/html'
  href: string
}

export interface ActivityHashTagObject {
  type: 'Hashtag'
  href?: string
  name: string
}

export interface ActivityMentionObject {
  type: 'Mention'
  href?: string
  name: string
}

export interface ActivityFlagReasonObject {
  type: 'Hashtag'
  name: AbusePredefinedReasonsString
}

export type ActivityTagObject =
  ActivityPlaylistSegmentHashesObject
  | ActivityStreamingPlaylistInfohashesObject
  | ActivityVideoUrlObject
  | ActivityHashTagObject
  | ActivityMentionObject
  | ActivityBitTorrentUrlObject
  | ActivityMagnetUrlObject
  | ActivityVideoFileMetadataUrlObject

export type ActivityUrlObject =
  ActivityVideoUrlObject
  | ActivityPlaylistUrlObject
  | ActivityBitTorrentUrlObject
  | ActivityMagnetUrlObject
  | ActivityHtmlUrlObject
  | ActivityVideoFileMetadataUrlObject
  | ActivityTrackerUrlObject

export interface ActivityPubAttributedTo {
  type: 'Group' | 'Person'
  id: string
}

export interface ActivityTombstoneObject {
  '@context'?: any
  id: string
  url?: string
  type: 'Tombstone'
  name?: string
  formerType?: string
  inReplyTo?: string
  published: string
  updated: string
  deleted: string
}