mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Introduce BundledExtensionParser
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
6d88442311
commit
0ac5571946
@ -0,0 +1,52 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { BundledExtensionParser } from "../bundled-extension-parser";
|
||||||
|
import fetchMock from "fetch-mock";
|
||||||
|
|
||||||
|
fetchMock.config.overwriteRoutes = true;
|
||||||
|
|
||||||
|
describe("BundledExtensionParser", () => {
|
||||||
|
afterAll(() => {
|
||||||
|
fetchMock.reset();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should return empty arrays if no url passed", async () => {
|
||||||
|
const lists = await new BundledExtensionParser("5.4.0-latest12345", "").getExtensionLists();
|
||||||
|
|
||||||
|
expect(lists).toEqual({
|
||||||
|
release: [],
|
||||||
|
available: [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should return empty releases array if no release json found", async () => {
|
||||||
|
fetchMock
|
||||||
|
.get("http://my-example-url.com/versions.json", [ { "node-menu": "0.0.1" } ] )
|
||||||
|
.get("http://my-example-url.com/5.4.0-latest12345.json", 408 );
|
||||||
|
|
||||||
|
|
||||||
|
const lists = await new BundledExtensionParser("5.4.0-latest12345", "http://my-example-url.com").getExtensionLists();
|
||||||
|
|
||||||
|
expect(lists).toEqual({
|
||||||
|
release: [],
|
||||||
|
available: [{ "node-menu": "0.0.1" }],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should return empty available array if no versions json found", async () => {
|
||||||
|
fetchMock
|
||||||
|
.get("http://my-example-url.com/versions.json", 408 )
|
||||||
|
.get("http://my-example-url.com/5.4.0-latest12345.json", [ { "node-menu": "0.0.1" } ]);
|
||||||
|
|
||||||
|
|
||||||
|
const lists = await new BundledExtensionParser("5.4.0-latest12345", "http://my-example-url.com").getExtensionLists();
|
||||||
|
|
||||||
|
expect(lists).toEqual({
|
||||||
|
release: [{ "node-menu": "0.0.1" }],
|
||||||
|
available: [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
57
src/main/extension-updater/bundled-extension-parser.ts
Normal file
57
src/main/extension-updater/bundled-extension-parser.ts
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import logger from "../logger";
|
||||||
|
|
||||||
|
type Extensions = Record<string, string>[];
|
||||||
|
|
||||||
|
interface ExtensionList {
|
||||||
|
release: Extensions,
|
||||||
|
available: Extensions
|
||||||
|
}
|
||||||
|
|
||||||
|
export class BundledExtensionParser {
|
||||||
|
constructor(private lensVersion: string, private url: string) {
|
||||||
|
}
|
||||||
|
|
||||||
|
get releaseJsonUrl() {
|
||||||
|
return `${this.url}/${this.lensVersion}.json`;
|
||||||
|
}
|
||||||
|
|
||||||
|
get availableJsonUrl() {
|
||||||
|
return `${this.url}/versions.json`;
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchJsonList(path: string): Promise<Extensions> {
|
||||||
|
return fetch(path, { method: "GET" }).then(response => {
|
||||||
|
if (response.ok) {
|
||||||
|
return response.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}).catch(error => {
|
||||||
|
logger.error(`[EXTENSION-PARSER]: Failed to download and parse extension list: ${error}`);
|
||||||
|
|
||||||
|
return [];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public async getExtensionLists(): Promise<ExtensionList> {
|
||||||
|
if (!this.url) {
|
||||||
|
return {
|
||||||
|
release: [],
|
||||||
|
available: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const release = await this.fetchJsonList(this.releaseJsonUrl);
|
||||||
|
const available = await this.fetchJsonList(this.availableJsonUrl);
|
||||||
|
|
||||||
|
return {
|
||||||
|
release,
|
||||||
|
available,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user