review fixes

This commit is contained in:
x
2025-04-24 23:30:35 -04:00
parent 0882c181d0
commit 7c49f6e302
8 changed files with 85 additions and 55 deletions
@@ -3,6 +3,7 @@ import { AxiosError } from "axios";
import { request } from "@app/lib/config/request";
import { BadRequestError } from "@app/lib/errors";
import { removeTrailingSlash } from "@app/lib/fn";
import { blockLocalAndPrivateIpAddresses } from "@app/lib/validator";
import { AppConnection } from "@app/services/app-connection/app-connection-enums";
import { TeamCityConnectionMethod } from "./teamcity-connection-enums";
@@ -12,6 +13,14 @@ import {
TTeamCityListProjectsResponse
} from "./teamcity-connection-types";
export const getTeamCityInstanceUrl = async (config: TTeamCityConnectionConfig) => {
const instanceUrl = removeTrailingSlash(config.credentials.instanceUrl);
await blockLocalAndPrivateIpAddresses(instanceUrl);
return instanceUrl;
};
export const getTeamCityConnectionListItem = () => {
return {
name: "TeamCity" as const,
@@ -21,7 +30,8 @@ export const getTeamCityConnectionListItem = () => {
};
export const validateTeamCityConnectionCredentials = async (config: TTeamCityConnectionConfig) => {
const instanceUrl = removeTrailingSlash(config.credentials.instanceUrl);
const instanceUrl = await getTeamCityInstanceUrl(config);
const { accessToken } = config.credentials;
try {
@@ -46,7 +56,7 @@ export const validateTeamCityConnectionCredentials = async (config: TTeamCityCon
};
export const listTeamCityProjects = async (appConnection: TTeamCityConnection) => {
const instanceUrl = removeTrailingSlash(appConnection.credentials.instanceUrl);
const instanceUrl = await getTeamCityInstanceUrl(appConnection);
const { accessToken } = appConnection.credentials;
const resp = await request.get<TTeamCityListProjectsResponse>(
@@ -145,7 +145,9 @@ export const SecretSyncFns = {
case SecretSync.TeamCity:
return TeamCitySyncFns.syncSecrets(secretSync, secretMap);
default:
throw new Error(`Unhandled sync destination for sync secrets fns: ${secretSync.destination}`);
throw new Error(
`Unhandled sync destination for sync secrets fns: ${(secretSync as TSecretSyncWithCredentials).destination}`
);
}
},
getSecrets: async (
@@ -205,7 +207,9 @@ export const SecretSyncFns = {
secretMap = await TeamCitySyncFns.getSecrets(secretSync);
break;
default:
throw new Error(`Unhandled sync destination for get secrets fns: ${secretSync.destination}`);
throw new Error(
`Unhandled sync destination for get secrets fns: ${(secretSync as TSecretSyncWithCredentials).destination}`
);
}
return secretMap;
@@ -258,7 +262,9 @@ export const SecretSyncFns = {
case SecretSync.TeamCity:
return TeamCitySyncFns.removeSecrets(secretSync, secretMap);
default:
throw new Error(`Unhandled sync destination for remove secrets fns: ${secretSync.destination}`);
throw new Error(
`Unhandled sync destination for remove secrets fns: ${(secretSync as TSecretSyncWithCredentials).destination}`
);
}
}
};
@@ -1,5 +1,5 @@
import { request } from "@app/lib/config/request";
import { removeTrailingSlash } from "@app/lib/fn";
import { getTeamCityInstanceUrl } from "@app/services/app-connection/teamcity";
import { SecretSyncError } from "@app/services/secret-sync/secret-sync-errors";
import { TSecretMap } from "@app/services/secret-sync/secret-sync-types";
import {
@@ -89,7 +89,7 @@ export const TeamCitySyncFns = {
destinationConfig: { project, buildConfig }
} = secretSync;
const instanceUrl = removeTrailingSlash(connection.credentials.instanceUrl);
const instanceUrl = await getTeamCityInstanceUrl(connection);
const { accessToken } = connection.credentials;
for await (const entry of Object.entries(secretMap)) {
@@ -145,7 +145,7 @@ export const TeamCitySyncFns = {
destinationConfig: { project, buildConfig }
} = secretSync;
const instanceUrl = removeTrailingSlash(connection.credentials.instanceUrl);
const instanceUrl = await getTeamCityInstanceUrl(connection);
const { accessToken } = connection.credentials;
const variables = await listTeamCityVariables({ instanceUrl, accessToken, project, buildConfig });
@@ -175,7 +175,7 @@ export const TeamCitySyncFns = {
destinationConfig: { project, buildConfig }
} = secretSync;
const instanceUrl = removeTrailingSlash(connection.credentials.instanceUrl);
const instanceUrl = await getTeamCityInstanceUrl(connection);
const { accessToken } = connection.credentials;
return listTeamCityVariables({ instanceUrl, accessToken, project, buildConfig });