aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/activitypub/send-request.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/activitypub/send-request.ts')
-rw-r--r--server/lib/activitypub/send-request.ts40
1 files changed, 21 insertions, 19 deletions
diff --git a/server/lib/activitypub/send-request.ts b/server/lib/activitypub/send-request.ts
index 664b9d826..f9b72f2a8 100644
--- a/server/lib/activitypub/send-request.ts
+++ b/server/lib/activitypub/send-request.ts
@@ -59,24 +59,21 @@ async function sendDeleteAccount (account: AccountInstance, t: Sequelize.Transac
59 return broadcastToFollowers(data, [ account ], t) 59 return broadcastToFollowers(data, [ account ], t)
60} 60}
61 61
62async function sendAnnounce (byAccount: AccountInstance, instance: VideoInstance | VideoChannelInstance, t: Sequelize.Transaction) { 62async function sendVideoChannelAnnounce (byAccount: AccountInstance, videoChannel: VideoChannelInstance, t: Sequelize.Transaction) {
63 const object = instance.toActivityPubObject() 63 const url = getActivityPubUrl('videoChannel', videoChannel.uuid) + '#announce'
64 64 const announcedActivity = await createActivityData(url, videoChannel.Account, videoChannel.toActivityPubObject(), true)
65 let url = '' 65
66 let objectActorUrl: string 66 const data = await announceActivityData(url, byAccount, announcedActivity)
67 if ((instance as any).VideoChannel !== undefined) { 67 return broadcastToFollowers(data, [ byAccount ], t)
68 objectActorUrl = (instance as VideoInstance).VideoChannel.Account.url 68}
69 url = getActivityPubUrl('video', instance.uuid) + '#announce'
70 } else {
71 objectActorUrl = (instance as VideoChannelInstance).Account.url
72 url = getActivityPubUrl('videoChannel', instance.uuid) + '#announce'
73 }
74 69
75 const objectWithActor = Object.assign(object, { 70async function sendVideoAnnounce (byAccount: AccountInstance, video: VideoInstance, t: Sequelize.Transaction) {
76 actor: objectActorUrl 71 const url = getActivityPubUrl('video', video.uuid) + '#announce'
77 })
78 72
79 const data = await announceActivityData(url, byAccount, objectWithActor) 73 const videoChannel = video.VideoChannel
74 const announcedActivity = await addActivityData(url, videoChannel.Account, videoChannel.url, video.toActivityPubObject(), true)
75
76 const data = await announceActivityData(url, byAccount, announcedActivity)
80 return broadcastToFollowers(data, [ byAccount ], t) 77 return broadcastToFollowers(data, [ byAccount ], t)
81} 78}
82 79
@@ -117,7 +114,8 @@ export {
117 sendAccept, 114 sendAccept,
118 sendFollow, 115 sendFollow,
119 sendVideoAbuse, 116 sendVideoAbuse,
120 sendAnnounce 117 sendVideoChannelAnnounce,
118 sendVideoAnnounce
121} 119}
122 120
123// --------------------------------------------------------------------------- 121// ---------------------------------------------------------------------------
@@ -159,7 +157,7 @@ async function getPublicActivityTo (account: AccountInstance) {
159 return inboxUrls.concat('https://www.w3.org/ns/activitystreams#Public') 157 return inboxUrls.concat('https://www.w3.org/ns/activitystreams#Public')
160} 158}
161 159
162async function createActivityData (url: string, byAccount: AccountInstance, object: any) { 160async function createActivityData (url: string, byAccount: AccountInstance, object: any, raw = false) {
163 const to = await getPublicActivityTo(byAccount) 161 const to = await getPublicActivityTo(byAccount)
164 const base = { 162 const base = {
165 type: 'Create', 163 type: 'Create',
@@ -169,6 +167,8 @@ async function createActivityData (url: string, byAccount: AccountInstance, obje
169 object 167 object
170 } 168 }
171 169
170 if (raw === true) return base
171
172 return buildSignedActivity(byAccount, base) 172 return buildSignedActivity(byAccount, base)
173} 173}
174 174
@@ -195,7 +195,7 @@ async function deleteActivityData (url: string, byAccount: AccountInstance) {
195 return buildSignedActivity(byAccount, base) 195 return buildSignedActivity(byAccount, base)
196} 196}
197 197
198async function addActivityData (url: string, byAccount: AccountInstance, target: string, object: any) { 198async function addActivityData (url: string, byAccount: AccountInstance, target: string, object: any, raw = false) {
199 const to = await getPublicActivityTo(byAccount) 199 const to = await getPublicActivityTo(byAccount)
200 const base = { 200 const base = {
201 type: 'Add', 201 type: 'Add',
@@ -206,6 +206,8 @@ async function addActivityData (url: string, byAccount: AccountInstance, target:
206 target 206 target
207 } 207 }
208 208
209 if (raw === true) return base
210
209 return buildSignedActivity(byAccount, base) 211 return buildSignedActivity(byAccount, base)
210} 212}
211 213