diff --git a/keyserver/src/database/migrations.js b/keyserver/src/database/migrations.js --- a/keyserver/src/database/migrations.js +++ b/keyserver/src/database/migrations.js @@ -8,10 +8,18 @@ import { dbQuery, SQL } from './database'; async function makeSureBaseRoutePathExists(filePath: string): Promise { - const readFile = await fs.promises.open(filePath, 'r'); - const contents = await readFile.readFile('utf8'); - const json = JSON.parse(contents); - await readFile.close(); + let readFile, json; + try { + readFile = await fs.promises.open(filePath, 'r'); + const contents = await readFile.readFile('utf8'); + json = JSON.parse(contents); + } catch { + return; + } finally { + if (readFile) { + await readFile.close(); + } + } if (json.baseRoutePath) { return; } @@ -31,10 +39,18 @@ } async function fixBaseRoutePathForLocalhost(filePath: string): Promise { - const readFile = await fs.promises.open(filePath, 'r'); - const contents = await readFile.readFile('utf8'); - let json = JSON.parse(contents); - await readFile.close(); + let readFile, json; + try { + readFile = await fs.promises.open(filePath, 'r'); + const contents = await readFile.readFile('utf8'); + json = JSON.parse(contents); + } catch { + return; + } finally { + if (readFile) { + await readFile.close(); + } + } if (json.baseDomain !== 'http://localhost') { return; } diff --git a/keyserver/src/utils/urls.js b/keyserver/src/utils/urls.js --- a/keyserver/src/utils/urls.js +++ b/keyserver/src/utils/urls.js @@ -1,10 +1,8 @@ // @flow -import { values } from 'lib/utils/objects'; +import invariant from 'invariant'; -import commAppURLFacts from '../../facts/commapp_url'; -import landingURLFacts from '../../facts/landing_url'; -import squadCalURLFacts from '../../facts/squadcal_url'; +import { values } from 'lib/utils/objects'; export type AppURLFacts = { +baseDomain: string, @@ -45,22 +43,28 @@ } function getSquadCalURLFacts(): AppURLFacts { - return squadCalURLFacts; + const urlFacts = cachedURLFacts.get('squadcal'); + invariant(urlFacts, 'keyserver/facts/squadcal_url.json missing'); + return urlFacts; } function getCommAppURLFacts(): AppURLFacts { - return commAppURLFacts; + const urlFacts = cachedURLFacts.get('commapp'); + invariant(urlFacts, 'keyserver/facts/commapp_url.json missing'); + return urlFacts; } function getAppURLFactsFromRequestURL(url: string): AppURLFacts { const commURLFacts = getCommAppURLFacts(); - return url.startsWith(commURLFacts.baseRoutePath) + return commURLFacts && url.startsWith(commURLFacts.baseRoutePath) ? commURLFacts : getSquadCalURLFacts(); } function getLandingURLFacts(): AppURLFacts { - return landingURLFacts; + const urlFacts = cachedURLFacts.get('landing'); + invariant(urlFacts, 'keyserver/facts/landing_url.json missing'); + return urlFacts; } function clientPathFromRouterPath(