A social knowledge tool for researchers built on ATProto
1import { Controller } from '../../../../../shared/infrastructure/http/Controller';
2import { Request, Response } from 'express';
3import { GetProfileUseCase } from '../../../application/useCases/queries/GetProfileUseCase';
4
5export class GetUserProfileController extends Controller {
6 constructor(private getProfileUseCase: GetProfileUseCase) {
7 super();
8 }
9
10 async executeImpl(req: Request, res: Response): Promise<any> {
11 try {
12 const { identifier } = req.params;
13
14 if (!identifier) {
15 return this.fail(res, 'Identifier (DID or handle) is required');
16 }
17
18 const result = await this.getProfileUseCase.execute({
19 userId: identifier,
20 });
21
22 if (result.isErr()) {
23 return this.fail(res, result.error);
24 }
25
26 return this.ok(res, result.value);
27 } catch (error: any) {
28 return this.fail(res, error);
29 }
30 }
31}