A social knowledge tool for researchers built on ATProto
1import { Controller } from '../../../../../shared/infrastructure/http/Controller';
2import { Response } from 'express';
3import { AuthenticatedRequest } from '../../../../../shared/infrastructure/http/middleware/AuthMiddleware';
4import { GenerateExtensionTokensUseCase } from '../../../application/use-cases/GenerateExtensionTokensUseCase';
5import { configService } from 'src/shared/infrastructure/config';
6
7export class GenerateExtensionTokensController extends Controller {
8 constructor(
9 private generateExtensionTokensUseCase: GenerateExtensionTokensUseCase,
10 ) {
11 super();
12 }
13
14 async executeImpl(req: AuthenticatedRequest, res: Response): Promise<any> {
15 try {
16 const userDid = req.did;
17
18 if (!userDid) {
19 return this.unauthorized(res, 'User not authenticated');
20 }
21
22 const result = await this.generateExtensionTokensUseCase.execute({
23 userDid,
24 });
25
26 if (result.isErr()) {
27 const errorMessage =
28 result.error instanceof Error
29 ? result.error.message
30 : 'Failed to generate extension tokens';
31 return this.fail(res, errorMessage);
32 }
33
34 return this.ok(res, result.value);
35 } catch (error: any) {
36 return this.fail(res, error.message || 'Unknown error');
37 }
38 }
39}