summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/mastodon/MastodonApiServerService.ts22
1 files changed, 15 insertions, 7 deletions
diff --git a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
index 6ab1d1559c..4bd6f1ac8e 100644
--- a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
+++ b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
@@ -1,5 +1,6 @@
import { Inject, Injectable } from '@nestjs/common';
import megalodon, { Entity, MegalodonInterface } from 'megalodon';
+import querystring from 'querystring';
import { IsNull } from 'typeorm';
import multer from 'fastify-multer';
import type { UsersRepository } from '@/models/_.js';
@@ -45,13 +46,20 @@ export class MastodonApiServerService {
done();
});
- fastify.addContentTypeParser(['application/x-www-form-urlencoded'], { parseAs: 'string' }, (req, body, done) => {
- const dataObj: any = {};
- const parsedData = new URLSearchParams(body as string);
- for (const pair of parsedData.entries()) {
- dataObj[pair[0]] = pair[1];
- }
- done(null, dataObj);
+ fastify.addContentTypeParser('application/x-www-form-urlencoded', function (request, payload, done) {
+ let body = '';
+ payload.on('data', function (data) {
+ body += data;
+ });
+ payload.on('end', function () {
+ try {
+ const parsed = querystring.parse(body);
+ done(null, parsed);
+ } catch (e: any) {
+ done(e);
+ }
+ });
+ payload.on('error', done);
});
fastify.register(multer.contentParser);