Fix bug with default ports in api config

JavaScript brilliance strikes again:

  new URL("https://acme.com:443").port == ""

Signed-off-by: Alexis Sellier <self@cloudhead.io>
This commit is contained in:
Alexis Sellier
2022-03-01 20:29:06 +01:00
parent 26e25895ce
commit 55ce9e8a33
2 changed files with 17 additions and 15 deletions
+9 -7
View File
@@ -1,6 +1,6 @@
export interface Host {
host: string;
port: number;
port: number | null;
}
export async function get(
@@ -23,24 +23,26 @@ export async function get(
path = path.startsWith("/") ? path.slice(1) : path;
const baseUrl = path
? `${protocol}${base}:${port}/v1/${path}`
: `${protocol}${base}:${port}`;
const url = search ? `${baseUrl}?${search}` : baseUrl;
? `${protocol}${base}/v1/${path}`
: `${protocol}${base}`;
const url = new URL(search ? `${baseUrl}?${search}` : baseUrl);
url.port = String(port);
const urlString = String(url);
let response = null;
try {
response = await fetch(url, {
response = await fetch(urlString, {
method: 'GET',
headers: {
'Accept': 'application/json',
}
});
} catch (err) {
throw new ApiError(url, "API request failed");
throw new ApiError(urlString, "API request failed");
}
if (! response.ok) {
throw new ApiError(url, "Not found");
throw new ApiError(urlString, "Not found");
}
return response.json();
}
+8 -8
View File
@@ -19,8 +19,8 @@ export class InvalidSeed {
export class Seed {
valid: true = true;
api: { host: string; port: number };
git: { host: string; port: number };
api: { host: string; port: number | null };
git: { host: string; port: number | null };
link: { host: string; id: string; port: number };
version?: string;
@@ -38,14 +38,14 @@ export class Seed {
let api = null;
let git = null;
let apiPort = null;
let gitPort = null;
let apiPort: number | null = cfg.seed.api.port;
let gitPort: number | null = cfg.seed.git.port;
if (seed.api) {
try {
const url = new URL(seed.api);
api = url.hostname;
apiPort = url.port || null;
apiPort = url.port ? Number(url.port) : null;
} catch {
api = seed.api;
}
@@ -56,7 +56,7 @@ export class Seed {
try {
const url = new URL(seed.git);
git = url.hostname;
gitPort = url.port || null;
gitPort = url.port ? Number(url.port) : null;
} catch {
git = seed.git;
}
@@ -75,8 +75,8 @@ export class Seed {
api = api ?? seed.host;
git = git ?? seed.host;
this.api = { host: api, port: Number(apiPort) || cfg.seed.api.port };
this.git = { host: git, port: Number(gitPort) || cfg.seed.git.port };
this.api = { host: api, port: apiPort };
this.git = { host: git, port: gitPort };
this.link = { host: seed.host, id: seed.id, port: cfg.seed.link.port };
if (seed.version) {