mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
import type { AppController } from '@/app.ts';
|
|
import { parseBody } from '@/utils/api.ts';
|
|
|
|
/**
|
|
* Apps are unnecessary cruft in Mastodon API, but necessary to make clients work.
|
|
* So when clients try to "create" an app, pretend they did and return a hardcoded app.
|
|
*/
|
|
const FAKE_APP = {
|
|
id: '1',
|
|
name: 'Ditto',
|
|
website: null,
|
|
redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
|
client_id: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', // he cry
|
|
client_secret: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', // 😱 😱 😱
|
|
vapid_key: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=',
|
|
};
|
|
|
|
const createAppSchema = z.object({
|
|
redirect_uris: z.string().url().optional(),
|
|
});
|
|
|
|
const createAppController: AppController = async (c) => {
|
|
// TODO: Handle both formData and json. 422 on parsing error.
|
|
try {
|
|
const { redirect_uris } = createAppSchema.parse(await parseBody(c.req.raw));
|
|
|
|
return c.json({
|
|
...FAKE_APP,
|
|
redirect_uri: redirect_uris || FAKE_APP.redirect_uri,
|
|
});
|
|
} catch (_e) {
|
|
return c.json(FAKE_APP);
|
|
}
|
|
};
|
|
|
|
const appCredentialsController: AppController = (c) => {
|
|
return c.json(FAKE_APP);
|
|
};
|
|
|
|
export { appCredentialsController, createAppController };
|