summaryrefslogtreecommitdiff
path: root/src/queue/processors/deliver.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/queue/processors/deliver.ts
parentupdate deps (diff)
downloadsharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/queue/processors/deliver.ts')
-rw-r--r--src/queue/processors/deliver.ts94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/queue/processors/deliver.ts b/src/queue/processors/deliver.ts
deleted file mode 100644
index 3c61896a2f..0000000000
--- a/src/queue/processors/deliver.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import { URL } from 'url';
-import * as Bull from 'bull';
-import request from '@/remote/activitypub/request';
-import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
-import Logger from '@/services/logger';
-import { Instances } from '@/models/index';
-import { instanceChart } from '@/services/chart/index';
-import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { toPuny } from '@/misc/convert-host';
-import { Cache } from '@/misc/cache';
-import { Instance } from '@/models/entities/instance';
-import { DeliverJobData } from '../types';
-import { StatusError } from '@/misc/fetch';
-
-const logger = new Logger('deliver');
-
-let latest: string | null = null;
-
-const suspendedHostsCache = new Cache<Instance[]>(1000 * 60 * 60);
-
-export default async (job: Bull.Job<DeliverJobData>) => {
- const { host } = new URL(job.data.to);
-
- // ブロックしてたら中断
- const meta = await fetchMeta();
- if (meta.blockedHosts.includes(toPuny(host))) {
- return 'skip (blocked)';
- }
-
- // isSuspendedなら中断
- let suspendedHosts = suspendedHostsCache.get(null);
- if (suspendedHosts == null) {
- suspendedHosts = await Instances.find({
- where: {
- isSuspended: true
- },
- });
- suspendedHostsCache.set(null, suspendedHosts);
- }
- if (suspendedHosts.map(x => x.host).includes(toPuny(host))) {
- return 'skip (suspended)';
- }
-
- try {
- if (latest !== (latest = JSON.stringify(job.data.content, null, 2))) {
- logger.debug(`delivering ${latest}`);
- }
-
- await request(job.data.user, job.data.to, job.data.content);
-
- // Update stats
- registerOrFetchInstanceDoc(host).then(i => {
- Instances.update(i.id, {
- latestRequestSentAt: new Date(),
- latestStatus: 200,
- lastCommunicatedAt: new Date(),
- isNotResponding: false
- });
-
- fetchInstanceMetadata(i);
-
- instanceChart.requestSent(i.host, true);
- });
-
- return 'Success';
- } catch (res) {
- // Update stats
- registerOrFetchInstanceDoc(host).then(i => {
- Instances.update(i.id, {
- latestRequestSentAt: new Date(),
- latestStatus: res instanceof StatusError ? res.statusCode : null,
- isNotResponding: true
- });
-
- instanceChart.requestSent(i.host, false);
- });
-
- if (res instanceof StatusError) {
- // 4xx
- if (res.isClientError) {
- // HTTPステータスコード4xxはクライアントエラーであり、それはつまり
- // 何回再送しても成功することはないということなのでエラーにはしないでおく
- return `${res.statusCode} ${res.statusMessage}`;
- }
-
- // 5xx etc.
- throw `${res.statusCode} ${res.statusMessage}`;
- } else {
- // DNS error, socket error, timeout ...
- throw res;
- }
- }
-};