mirror of
https://github.com/danbulant/discord.js
synced 2026-07-05 03:00:35 +00:00
middleware model
This commit is contained in:
parent
a626dc8c41
commit
21bfe3da7c
1 changed files with 29 additions and 12 deletions
|
|
@ -135,20 +135,37 @@ class InteractionClient extends BaseClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleFromHTTP(body, signature, timestamp) {
|
middleware() {
|
||||||
if (sodium === undefined) {
|
return async (req, res, next) => {
|
||||||
sodium = require('../util/Sodium');
|
const timestamp = req.get('x-signature-timestamp');
|
||||||
}
|
const signature = req.get('x-signature-ed25519');
|
||||||
if (!sodium.methods.verify(Buffer.from(signature, 'hex'), Buffer.from(timestamp + body), this.publicKey)) {
|
|
||||||
return { status: 400, body: '' };
|
|
||||||
}
|
|
||||||
const data = JSON.parse(body);
|
|
||||||
|
|
||||||
const result = await this.handle(data);
|
const chunks = [];
|
||||||
|
for await (const chunk of req) {
|
||||||
|
chunks.push(chunk);
|
||||||
|
}
|
||||||
|
const body = Buffer.concat(chunks);
|
||||||
|
|
||||||
return {
|
if (sodium === undefined) {
|
||||||
status: 200,
|
sodium = require('../util/Sodium');
|
||||||
body: JSON.stringify(result),
|
}
|
||||||
|
if (
|
||||||
|
!sodium.methods.verify(
|
||||||
|
Buffer.from(signature, 'hex'),
|
||||||
|
Buffer.concat([Buffer.from(timestamp), body]),
|
||||||
|
this.publicKey,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
res.status(403).end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = JSON.parse(body.toString());
|
||||||
|
|
||||||
|
const result = await this.handle(data);
|
||||||
|
res.status(200).end(JSON.stringify(result));
|
||||||
|
|
||||||
|
next();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue