X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fshare.ts;h=1ff01a1751a88602dad85c0ecc650bfb75a7968a;hb=136d7efde798d3dc0ec0dd18aac674365f7d162e;hp=dde0c628e314a412ad87eaf92d1bcfb3253e6456;hpb=452b3bea082481b84537e55c7cedc1e24860d543;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/share.ts b/server/lib/activitypub/share.ts index dde0c628e..1ff01a175 100644 --- a/server/lib/activitypub/share.ts +++ b/server/lib/activitypub/share.ts @@ -3,11 +3,11 @@ import { Transaction } from 'sequelize' import { getServerActor } from '@server/models/application/application' import { checkUrlsSameHost, getAPId } from '../../helpers/activitypub' import { logger, loggerTagsFactory } from '../../helpers/logger' -import { doRequest } from '../../helpers/requests' +import { doJSONRequest } from '../../helpers/requests' import { CRAWL_REQUEST_CONCURRENCY } from '../../initializers/constants' import { VideoShareModel } from '../../models/video/video-share' import { MChannelActorLight, MVideo, MVideoAccountLight, MVideoId } from '../../types/models/video' -import { getOrCreateActorAndServerAndModel } from './actor' +import { getOrCreateAPActor } from './actors' import { sendUndoAnnounce, sendVideoAnnounce } from './send' import { getLocalVideoAnnounceActivityPubUrl } from './url' @@ -40,28 +40,7 @@ async function changeVideoChannelShare ( async function addVideoShares (shareUrls: string[], video: MVideoId) { await Bluebird.map(shareUrls, async shareUrl => { try { - // Fetch url - const { body } = await doRequest({ - uri: shareUrl, - json: true, - activityPub: true - }) - if (!body || !body.actor) throw new Error('Body or body actor is invalid') - - const actorUrl = getAPId(body.actor) - if (checkUrlsSameHost(shareUrl, actorUrl) !== true) { - throw new Error(`Actor url ${actorUrl} has not the same host than the share url ${shareUrl}`) - } - - const actor = await getOrCreateActorAndServerAndModel(actorUrl) - - const entry = { - actorId: actor.id, - videoId: video.id, - url: shareUrl - } - - await VideoShareModel.upsert(entry) + await addVideoShare(shareUrl, video) } catch (err) { logger.warn('Cannot add share %s.', shareUrl, { err }) } @@ -76,6 +55,26 @@ export { // --------------------------------------------------------------------------- +async function addVideoShare (shareUrl: string, video: MVideoId) { + const { body } = await doJSONRequest(shareUrl, { activityPub: true }) + if (!body || !body.actor) throw new Error('Body or body actor is invalid') + + const actorUrl = getAPId(body.actor) + if (checkUrlsSameHost(shareUrl, actorUrl) !== true) { + throw new Error(`Actor url ${actorUrl} has not the same host than the share url ${shareUrl}`) + } + + const actor = await getOrCreateAPActor(actorUrl) + + const entry = { + actorId: actor.id, + videoId: video.id, + url: shareUrl + } + + await VideoShareModel.upsert(entry) +} + async function shareByServer (video: MVideo, t: Transaction) { const serverActor = await getServerActor()