diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-03-31 19:55:00 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-03-31 20:33:14 +0900 |
| commit | 68a9aac9573969311dd00a44536c3ee4c05b883d (patch) | |
| tree | 7d6c502c1e2c61eb3327f678f766f23bda10c1e7 /src/processor/http | |
| parent | Store texts as HTML (diff) | |
| download | sharkey-68a9aac9573969311dd00a44536c3ee4c05b883d.tar.gz sharkey-68a9aac9573969311dd00a44536c3ee4c05b883d.tar.bz2 sharkey-68a9aac9573969311dd00a44536c3ee4c05b883d.zip | |
Implement remote status retrieval
Diffstat (limited to 'src/processor/http')
| -rw-r--r-- | src/processor/http/index.ts | 9 | ||||
| -rw-r--r-- | src/processor/http/perform-activitypub.ts | 6 | ||||
| -rw-r--r-- | src/processor/http/report-github-failure.ts | 29 |
3 files changed, 44 insertions, 0 deletions
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(); + }); +}; |