diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-11-16 15:22:39 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-11-27 19:40:52 +0100 |
commit | 20494f122186bb1bfd82f4c598c4744acea27b0c (patch) | |
tree | 097652a31ecf70491b970b6c8e06b22380ee004f /server/lib/activitypub/send-request.ts | |
parent | efc32059d980c51793e8e9ac0fb6a885a8026f94 (diff) | |
download | PeerTube-20494f122186bb1bfd82f4c598c4744acea27b0c.tar.gz PeerTube-20494f122186bb1bfd82f4c598c4744acea27b0c.tar.zst PeerTube-20494f122186bb1bfd82f4c598c4744acea27b0c.zip |
Server shares user videos
Diffstat (limited to 'server/lib/activitypub/send-request.ts')
-rw-r--r-- | server/lib/activitypub/send-request.ts | 40 |
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 | ||
62 | async function sendAnnounce (byAccount: AccountInstance, instance: VideoInstance | VideoChannelInstance, t: Sequelize.Transaction) { | 62 | async 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, { | 70 | async 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 | ||
162 | async function createActivityData (url: string, byAccount: AccountInstance, object: any) { | 160 | async 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 | ||
198 | async function addActivityData (url: string, byAccount: AccountInstance, target: string, object: any) { | 198 | async 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 | ||