From 68a9aac9573969311dd00a44536c3ee4c05b883d Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Sat, 31 Mar 2018 19:55:00 +0900 Subject: Implement remote status retrieval --- src/processor/http/index.ts | 9 +++++++++ src/processor/http/perform-activitypub.ts | 6 ++++++ src/processor/http/report-github-failure.ts | 29 +++++++++++++++++++++++++++++ src/processor/index.ts | 13 +++++++++++-- src/processor/report-github-failure.ts | 29 ----------------------------- 5 files changed, 55 insertions(+), 31 deletions(-) create mode 100644 src/processor/http/index.ts create mode 100644 src/processor/http/perform-activitypub.ts create mode 100644 src/processor/http/report-github-failure.ts delete mode 100644 src/processor/report-github-failure.ts (limited to 'src/processor') diff --git a/src/processor/http/index.ts b/src/processor/http/index.ts new file mode 100644 index 0000000000..da942ad2a1 --- /dev/null +++ b/src/processor/http/index.ts @@ -0,0 +1,9 @@ +import performActivityPub from './perform-activitypub'; +import reportGitHubFailure from './report-github-failure'; + +const handlers = { + performActivityPub, + reportGitHubFailure, +}; + +export default (job, done) => handlers[job.data.type](job).then(() => done(), done); diff --git a/src/processor/http/perform-activitypub.ts b/src/processor/http/perform-activitypub.ts new file mode 100644 index 0000000000..5b1a02173d --- /dev/null +++ b/src/processor/http/perform-activitypub.ts @@ -0,0 +1,6 @@ +import User from '../../models/user'; +import act from '../../common/remote/activitypub/act'; + +export default ({ data }, done) => User.findOne({ _id: data.actor }) + .then(actor => act(actor, data.outbox)) + .then(() => done(), done); diff --git a/src/processor/http/report-github-failure.ts b/src/processor/http/report-github-failure.ts new file mode 100644 index 0000000000..53924a0fbd --- /dev/null +++ b/src/processor/http/report-github-failure.ts @@ -0,0 +1,29 @@ +import * as request from 'request'; +import User from '../../models/user'; +const createPost = require('../../server/api/endpoints/posts/create'); + +export default ({ data }, done) => { + const asyncBot = User.findOne({ _id: data.userId }); + + // Fetch parent status + request({ + url: `${data.parentUrl}/statuses`, + headers: { + 'User-Agent': 'misskey' + } + }, async (err, res, body) => { + if (err) { + console.error(err); + return; + } + const parentStatuses = JSON.parse(body); + const parentState = parentStatuses[0].state; + const stillFailed = parentState == 'failure' || parentState == 'error'; + const text = stillFailed ? + `**⚠️BUILD STILL FAILED⚠️**: ?[${data.message}](${data.htmlUrl})` : + `**🚨BUILD FAILED🚨**: →→→?[${data.message}](${data.htmlUrl})←←←`; + + createPost({ text }, await asyncBot); + done(); + }); +}; diff --git a/src/processor/index.ts b/src/processor/index.ts index f06cf24e87..cd271d3720 100644 --- a/src/processor/index.ts +++ b/src/processor/index.ts @@ -1,4 +1,13 @@ import queue from '../queue'; -import reportGitHubFailure from './report-github-failure'; +import http from './http'; -export default () => queue.process('gitHubFailureReport', reportGitHubFailure); +/* + 256 is the default concurrency limit of Mozilla Firefox and Google + Chromium. + + a8af215e691f3a2205a3758d2d96e9d328e100ff - chromium/src.git - Git at Google + https://chromium.googlesource.com/chromium/src.git/+/a8af215e691f3a2205a3758d2d96e9d328e100ff + Network.http.max-connections - MozillaZine Knowledge Base + http://kb.mozillazine.org/Network.http.max-connections +*/ +export default () => queue.process('http', 256, http); diff --git a/src/processor/report-github-failure.ts b/src/processor/report-github-failure.ts deleted file mode 100644 index 610ffe2767..0000000000 --- a/src/processor/report-github-failure.ts +++ /dev/null @@ -1,29 +0,0 @@ -import * as request from 'request'; -import User from '../models/user'; -const createPost = require('../server/api/endpoints/posts/create'); - -export default ({ data }, done) => { - const asyncBot = User.findOne({ _id: data.userId }); - - // Fetch parent status - request({ - url: `${data.parentUrl}/statuses`, - headers: { - 'User-Agent': 'misskey' - } - }, async (err, res, body) => { - if (err) { - console.error(err); - return; - } - const parentStatuses = JSON.parse(body); - const parentState = parentStatuses[0].state; - const stillFailed = parentState == 'failure' || parentState == 'error'; - const text = stillFailed ? - `**⚠️BUILD STILL FAILED⚠️**: ?[${data.message}](${data.htmlUrl})` : - `**🚨BUILD FAILED🚨**: →→→?[${data.message}](${data.htmlUrl})←←←`; - - createPost({ text }, await asyncBot); - done(); - }); -}; -- cgit v1.2.3-freya