A social knowledge tool for researchers built on ATProto
at development 1.2 kB view raw
1import { Controller } from '../../../../../shared/infrastructure/http/Controller'; 2import { Response } from 'express'; 3import { GetUrlStatusForMyLibraryUseCase } from '../../../application/useCases/queries/GetUrlStatusForMyLibraryUseCase'; 4import { AuthenticatedRequest } from '../../../../../shared/infrastructure/http/middleware/AuthMiddleware'; 5 6export class GetUrlStatusForMyLibraryController extends Controller { 7 constructor( 8 private getUrlStatusForMyLibraryUseCase: GetUrlStatusForMyLibraryUseCase, 9 ) { 10 super(); 11 } 12 13 async executeImpl(req: AuthenticatedRequest, res: Response): Promise<any> { 14 try { 15 const { url } = req.query; 16 const curatorId = req.did; 17 18 if (!curatorId) { 19 return this.unauthorized(res); 20 } 21 22 if (!url || typeof url !== 'string') { 23 return this.badRequest(res, 'URL query parameter is required'); 24 } 25 26 const result = await this.getUrlStatusForMyLibraryUseCase.execute({ 27 url, 28 curatorId, 29 }); 30 31 if (result.isErr()) { 32 return this.fail(res, result.error); 33 } 34 35 return this.ok(res, result.value); 36 } catch (error: any) { 37 return this.fail(res, error); 38 } 39 } 40}