diff options
Diffstat (limited to 'server/lib/activitypub/actor.ts')
-rw-r--r-- | server/lib/activitypub/actor.ts | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/server/lib/activitypub/actor.ts b/server/lib/activitypub/actor.ts index f802658cf..3f6edc070 100644 --- a/server/lib/activitypub/actor.ts +++ b/server/lib/activitypub/actor.ts | |||
@@ -1,6 +1,6 @@ | |||
1 | import * as Bluebird from 'bluebird' | 1 | import * as Bluebird from 'bluebird' |
2 | import { Transaction } from 'sequelize' | 2 | import { Transaction } from 'sequelize' |
3 | import * as url from 'url' | 3 | import { URL } from 'url' |
4 | import * as uuidv4 from 'uuid/v4' | 4 | import * as uuidv4 from 'uuid/v4' |
5 | import { ActivityPubActor, ActivityPubActorType } from '../../../shared/models/activitypub' | 5 | import { ActivityPubActor, ActivityPubActorType } from '../../../shared/models/activitypub' |
6 | import { ActivityPubAttributedTo } from '../../../shared/models/activitypub/objects' | 6 | import { ActivityPubAttributedTo } from '../../../shared/models/activitypub/objects' |
@@ -33,8 +33,7 @@ import { | |||
33 | MActorFull, | 33 | MActorFull, |
34 | MActorFullActor, | 34 | MActorFullActor, |
35 | MActorId, | 35 | MActorId, |
36 | MChannel, | 36 | MChannel |
37 | MChannelAccountDefault | ||
38 | } from '../../typings/models' | 37 | } from '../../typings/models' |
39 | 38 | ||
40 | // Set account keys, this could be long so process after the account creation and do not block the client | 39 | // Set account keys, this could be long so process after the account creation and do not block the client |
@@ -121,13 +120,13 @@ async function getOrCreateActorAndServerAndModel ( | |||
121 | 120 | ||
122 | if ((created === true || refreshed === true) && updateCollections === true) { | 121 | if ((created === true || refreshed === true) && updateCollections === true) { |
123 | const payload = { uri: actor.outboxUrl, type: 'activity' as 'activity' } | 122 | const payload = { uri: actor.outboxUrl, type: 'activity' as 'activity' } |
124 | await JobQueue.Instance.createJob({ type: 'activitypub-http-fetcher', payload }) | 123 | await JobQueue.Instance.createJobWithPromise({ type: 'activitypub-http-fetcher', payload }) |
125 | } | 124 | } |
126 | 125 | ||
127 | // We created a new account: fetch the playlists | 126 | // We created a new account: fetch the playlists |
128 | if (created === true && actor.Account && accountPlaylistsUrl) { | 127 | if (created === true && actor.Account && accountPlaylistsUrl) { |
129 | const payload = { uri: accountPlaylistsUrl, accountId: actor.Account.id, type: 'account-playlists' as 'account-playlists' } | 128 | const payload = { uri: accountPlaylistsUrl, accountId: actor.Account.id, type: 'account-playlists' as 'account-playlists' } |
130 | await JobQueue.Instance.createJob({ type: 'activitypub-http-fetcher', payload }) | 129 | await JobQueue.Instance.createJobWithPromise({ type: 'activitypub-http-fetcher', payload }) |
131 | } | 130 | } |
132 | 131 | ||
133 | return actorRefreshed | 132 | return actorRefreshed |
@@ -215,7 +214,7 @@ async function fetchActorTotalItems (url: string) { | |||
215 | } | 214 | } |
216 | } | 215 | } |
217 | 216 | ||
218 | async function getAvatarInfoIfExists (actorJSON: ActivityPubActor) { | 217 | function getAvatarInfoIfExists (actorJSON: ActivityPubActor) { |
219 | if ( | 218 | if ( |
220 | actorJSON.icon && actorJSON.icon.type === 'Image' && MIMETYPES.IMAGE.MIMETYPE_EXT[actorJSON.icon.mediaType] !== undefined && | 219 | actorJSON.icon && actorJSON.icon.type === 'Image' && MIMETYPES.IMAGE.MIMETYPE_EXT[actorJSON.icon.mediaType] !== undefined && |
221 | isActivityPubUrlValid(actorJSON.icon.url) | 220 | isActivityPubUrlValid(actorJSON.icon.url) |
@@ -271,7 +270,10 @@ async function refreshActorIfNeeded <T extends MActorFull | MActorAccountChannel | |||
271 | 270 | ||
272 | if (statusCode === 404) { | 271 | if (statusCode === 404) { |
273 | logger.info('Deleting actor %s because there is a 404 in refresh actor.', actor.url) | 272 | logger.info('Deleting actor %s because there is a 404 in refresh actor.', actor.url) |
274 | actor.Account ? actor.Account.destroy() : actor.VideoChannel.destroy() | 273 | actor.Account |
274 | ? await actor.Account.destroy() | ||
275 | : await actor.VideoChannel.destroy() | ||
276 | |||
275 | return { actor: undefined, refreshed: false } | 277 | return { actor: undefined, refreshed: false } |
276 | } | 278 | } |
277 | 279 | ||
@@ -337,14 +339,14 @@ function saveActorAndServerAndModelIfNotExist ( | |||
337 | ownerActor?: MActorFullActor, | 339 | ownerActor?: MActorFullActor, |
338 | t?: Transaction | 340 | t?: Transaction |
339 | ): Bluebird<MActorFullActor> | Promise<MActorFullActor> { | 341 | ): Bluebird<MActorFullActor> | Promise<MActorFullActor> { |
340 | let actor = result.actor | 342 | const actor = result.actor |
341 | 343 | ||
342 | if (t !== undefined) return save(t) | 344 | if (t !== undefined) return save(t) |
343 | 345 | ||
344 | return sequelizeTypescript.transaction(t => save(t)) | 346 | return sequelizeTypescript.transaction(t => save(t)) |
345 | 347 | ||
346 | async function save (t: Transaction) { | 348 | async function save (t: Transaction) { |
347 | const actorHost = url.parse(actor.url).host | 349 | const actorHost = new URL(actor.url).host |
348 | 350 | ||
349 | const serverOptions = { | 351 | const serverOptions = { |
350 | where: { | 352 | where: { |
@@ -402,7 +404,7 @@ type FetchRemoteActorResult = { | |||
402 | support?: string | 404 | support?: string |
403 | playlists?: string | 405 | playlists?: string |
404 | avatar?: { | 406 | avatar?: { |
405 | name: string, | 407 | name: string |
406 | fileUrl: string | 408 | fileUrl: string |
407 | } | 409 | } |
408 | attributedTo: ActivityPubAttributedTo[] | 410 | attributedTo: ActivityPubAttributedTo[] |