diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-05-06 23:19:23 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-05-08 11:23:20 -0400 |
| commit | b2ea03383cd53ac213c4dee6dbd086ab6f54daa7 (patch) | |
| tree | d2fd601cb1c24d3e290aa4cef53c6d6df99953c2 /packages/backend/src/server/api/mastodon | |
| parent | fix "cannot use 'in' operator" error (diff) | |
| download | sharkey-b2ea03383cd53ac213c4dee6dbd086ab6f54daa7.tar.gz sharkey-b2ea03383cd53ac213c4dee6dbd086ab6f54daa7.tar.bz2 sharkey-b2ea03383cd53ac213c4dee6dbd086ab6f54daa7.zip | |
implement '/v1/apps/verify_credentials'
Diffstat (limited to 'packages/backend/src/server/api/mastodon')
| -rw-r--r-- | packages/backend/src/server/api/mastodon/MastodonConverters.ts | 12 | ||||
| -rw-r--r-- | packages/backend/src/server/api/mastodon/endpoints/apps.ts | 9 |
2 files changed, 19 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/mastodon/MastodonConverters.ts b/packages/backend/src/server/api/mastodon/MastodonConverters.ts index cf625d6e94..375ea1ef08 100644 --- a/packages/backend/src/server/api/mastodon/MastodonConverters.ts +++ b/packages/backend/src/server/api/mastodon/MastodonConverters.ts @@ -4,7 +4,7 @@ */ import { Inject, Injectable } from '@nestjs/common'; -import { Entity, MastodonEntity } from 'megalodon'; +import { Entity, MastodonEntity, MisskeyEntity } from 'megalodon'; import mfm from '@transfem-org/sfm-js'; import { MastodonNotificationType } from 'megalodon/lib/src/mastodon/notification.js'; import { NotificationType } from 'megalodon/lib/src/notification.js'; @@ -369,6 +369,15 @@ export class MastodonConverters { type: convertNotificationType(notification.type as NotificationType), }; } + + public convertApplication(app: MisskeyEntity.App): MastodonEntity.Application { + return { + name: app.name, + scopes: app.permission, + redirect_uri: app.callbackUrl, + redirect_uris: [app.callbackUrl], + }; + } } function simpleConvert<T>(data: T): T { @@ -459,4 +468,3 @@ export function convertRelationship(relationship: Partial<Entity.Relationship> & note: relationship.note ?? '', }; } - diff --git a/packages/backend/src/server/api/mastodon/endpoints/apps.ts b/packages/backend/src/server/api/mastodon/endpoints/apps.ts index 5fce838f47..72b520c74a 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/apps.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/apps.ts @@ -5,6 +5,7 @@ import { Injectable } from '@nestjs/common'; import { MastodonClientService } from '@/server/api/mastodon/MastodonClientService.js'; +import { MastodonConverters } from '@/server/api/mastodon/MastodonConverters.js'; import type { FastifyInstance } from 'fastify'; const readScope = [ @@ -59,6 +60,7 @@ type AuthMastodonRoute = { Body?: AuthPayload, Querystring: AuthPayload }; export class ApiAppsMastodon { constructor( private readonly clientService: MastodonClientService, + private readonly mastoConverters: MastodonConverters, ) {} public register(fastify: FastifyInstance): void { @@ -108,6 +110,13 @@ export class ApiAppsMastodon { return reply.send(response); }); + + fastify.get('/v1/apps/verify_credentials', async (_request, reply) => { + const client = this.clientService.getClient(_request); + const data = await client.verifyAppCredentials(); + const response = this.mastoConverters.convertApplication(data.data); + return reply.send(response); + }); } } |