X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fcrawl.ts;h=336129b822013a0e3e01786069d6923005d1de27;hb=e1a570abff3ebf375433e58e7362d56bd32d4cd8;hp=eeafdf4ba8d04848242020af795f8fb4388cda8b;hpb=818c449b3c34e9f324ac744120c8774e724ab25e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/crawl.ts b/server/lib/activitypub/crawl.ts index eeafdf4ba..336129b82 100644 --- a/server/lib/activitypub/crawl.ts +++ b/server/lib/activitypub/crawl.ts @@ -1,27 +1,24 @@ -import { ACTIVITY_PUB, JOB_REQUEST_TIMEOUT, WEBSERVER } from '../../initializers/constants' -import { doRequest } from '../../helpers/requests' -import { logger } from '../../helpers/logger' -import * as Bluebird from 'bluebird' -import { ActivityPubOrderedCollection } from '../../../shared/models/activitypub' +import Bluebird from 'bluebird' import { URL } from 'url' +import { retryTransactionWrapper } from '@server/helpers/database-utils' +import { ActivityPubOrderedCollection } from '../../../shared/models/activitypub' +import { logger } from '../../helpers/logger' +import { doJSONRequest } from '../../helpers/requests' +import { ACTIVITY_PUB, WEBSERVER } from '../../initializers/constants' type HandlerFunction = (items: T[]) => (Promise | Bluebird) -type CleanerFunction = (startedDate: Date) => (Promise | Bluebird) +type CleanerFunction = (startedDate: Date) => Promise -async function crawlCollectionPage (uri: string, handler: HandlerFunction, cleaner?: CleanerFunction) { - logger.info('Crawling ActivityPub data on %s.', uri) +async function crawlCollectionPage (argUrl: string, handler: HandlerFunction, cleaner?: CleanerFunction) { + let url = argUrl - const options = { - method: 'GET', - uri, - json: true, - activityPub: true, - timeout: JOB_REQUEST_TIMEOUT - } + logger.info('Crawling ActivityPub data on %s.', url) + + const options = { activityPub: true } const startDate = new Date() - const response = await doRequest>(options) + const response = await doJSONRequest>(url, options) const firstBody = response.body const limit = ACTIVITY_PUB.FETCH_PAGE_LIMIT @@ -35,9 +32,9 @@ async function crawlCollectionPage (uri: string, handler: HandlerFunction const remoteHost = new URL(nextLink).host if (remoteHost === WEBSERVER.HOST) continue - options.uri = nextLink + url = nextLink - const res = await doRequest>(options) + const res = await doJSONRequest>(url, options) body = res.body } else { // nextLink is already the object we want @@ -49,13 +46,13 @@ async function crawlCollectionPage (uri: string, handler: HandlerFunction if (Array.isArray(body.orderedItems)) { const items = body.orderedItems - logger.info('Processing %i ActivityPub items for %s.', items.length, options.uri) + logger.info('Processing %i ActivityPub items for %s.', items.length, url) await handler(items) } } - if (cleaner) await cleaner(startDate) + if (cleaner) await retryTransactionWrapper(cleaner, startDate) } export {