From 9083a7a84db1cc02d03faaf703c4b195b9dc970a Mon Sep 17 00:00:00 2001 From: Xavier Jouslin de Noray <xavier.jouslindenoray@savoirfairelinux.com> Date: Tue, 2 Jan 2024 15:22:29 -0500 Subject: [PATCH] Version Request Broken: give the version for one plugin Gitlab: #13 Change-Id: I32fcf48eada33c3049d79cb50abca20bd0c6e97f --- src/controllers/plugins.controller.ts | 17 ++++++++++----- src/services/plugins.manager.service.ts | 29 +++++++++++++++---------- tests/plugins.manager.test.ts | 2 +- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/controllers/plugins.controller.ts b/src/controllers/plugins.controller.ts index 0368283..4edda25 100644 --- a/src/controllers/plugins.controller.ts +++ b/src/controllers/plugins.controller.ts @@ -303,8 +303,12 @@ export class PluginsController { .status(isUploadable ? StatusCodes.OK : StatusCodes.FORBIDDEN) .send() ) - .catch(() => res.status(StatusCodes.INTERNAL_SERVER_ERROR).send()); + .catch(e => { + console.log(e); + res.status(StatusCodes.INTERNAL_SERVER_ERROR).send(); + }); } catch (e) { + console.log(e); res.status(StatusCodes.INTERNAL_SERVER_ERROR).send(); } }); @@ -407,16 +411,19 @@ export class PluginsController { // eslint-disable-next-line @typescript-eslint/no-misused-promises this.router.get('/versions/:id', async (req: Request, res: Response) => { try { - if (req.query.arch === undefined) { + if (req.query.arch === undefined || req.params.id === undefined) { res.status(StatusCodes.BAD_REQUEST).send(); return; } - const versions = await this.pluginsManager.getVersions(); + const version = await this.pluginsManager.getVersion( + req.params.id, + req.query.arch as string + ); res .status( - versions.length === 0 ? StatusCodes.NOT_FOUND : StatusCodes.OK + version === undefined ? StatusCodes.NOT_FOUND : StatusCodes.OK ) - .send(versions === undefined ? undefined : versions); + .send(version === undefined ? undefined : [{version}]); return; } catch (e) { res.status(StatusCodes.INTERNAL_SERVER_ERROR).send(); diff --git a/src/services/plugins.manager.service.ts b/src/services/plugins.manager.service.ts index bf96f84..00b5cd2 100644 --- a/src/services/plugins.manager.service.ts +++ b/src/services/plugins.manager.service.ts @@ -275,21 +275,28 @@ export class PluginsManager { ); } - async getVersions(): Promise<Array<{id: string; version: string}>> { + async getVersion(id: string, arch: string): Promise<string | undefined> { + const plugin = await this.findPlugin(id, arch); + return plugin === undefined ? undefined : plugin.version; + } + + async getVersions( + arch: string + ): Promise<Array<{id: string; version: string}>> { if (this.plugins.length === 0) { await this.setPlugins(); } - const versions: Array<{id: string; version: string}> = []; - for (const plugin of this.plugins) { - const version = plugin.version; - if (version !== undefined) { - versions.push({ + return this.plugins + .filter( + (plugins: Plugins) => + plugins.arches.includes(arch) && plugins.version !== undefined + ) + .map((plugin: Plugins) => { + return { id: plugin.id, - version, - }); - } - } - return versions; + version: plugin.version, + }; + }); } private async setPlugins(): Promise<void> { diff --git a/tests/plugins.manager.test.ts b/tests/plugins.manager.test.ts index 4f46547..d334168 100644 --- a/tests/plugins.manager.test.ts +++ b/tests/plugins.manager.test.ts @@ -318,7 +318,7 @@ describe('Plugins manager service tests', function () { { id: 'plugin3', version: '3.0.0' }, ]; - const actualVersions = await pluginsManagerService.getVersions(); + const actualVersions = await pluginsManagerService.getVersions('x64'); expect(actualVersions).toEqual(expectedVersions); }); -- GitLab