mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 19:16:22 +00:00
Make webhooks work, add workspace selection, rename BitBucket to
Bitbucket
This commit is contained in:
@@ -3,31 +3,67 @@ import { useQuery, UseQueryOptions } from "@tanstack/react-query";
|
||||
import { apiRequest } from "@app/config/request";
|
||||
|
||||
import { appConnectionKeys } from "../queries";
|
||||
import { TBitBucketConnectionListRepositoriesResponse, TBitBucketRepo } from "./types";
|
||||
import {
|
||||
TBitbucketConnectionListRepositoriesResponse,
|
||||
TBitbucketConnectionListWorkspacesResponse,
|
||||
TBitbucketRepo,
|
||||
TBitbucketWorkspace
|
||||
} from "./types";
|
||||
|
||||
const bitBucketConnectionKeys = {
|
||||
all: [...appConnectionKeys.all, "bitbucket"] as const,
|
||||
listRepos: (connectionId: string) =>
|
||||
[...bitBucketConnectionKeys.all, "repos", connectionId] as const
|
||||
listRepos: (connectionId: string, workspaceSlug: string) =>
|
||||
[...bitBucketConnectionKeys.all, "repos", connectionId, workspaceSlug] as const,
|
||||
listWorkspaces: (connectionId: string) =>
|
||||
[...bitBucketConnectionKeys.all, "workspaces", connectionId] as const
|
||||
};
|
||||
|
||||
export const useBitBucketConnectionListRepositories = (
|
||||
export const useBitbucketConnectionListWorkspaces = (
|
||||
connectionId: string,
|
||||
options?: Omit<
|
||||
UseQueryOptions<
|
||||
TBitBucketRepo[],
|
||||
TBitbucketWorkspace[],
|
||||
unknown,
|
||||
TBitBucketRepo[],
|
||||
TBitbucketWorkspace[],
|
||||
ReturnType<typeof bitBucketConnectionKeys.listWorkspaces>
|
||||
>,
|
||||
"queryKey" | "queryFn"
|
||||
>
|
||||
) => {
|
||||
return useQuery({
|
||||
queryKey: bitBucketConnectionKeys.listWorkspaces(connectionId),
|
||||
queryFn: async () => {
|
||||
const { data } = await apiRequest.get<TBitbucketConnectionListWorkspacesResponse>(
|
||||
`/api/v1/app-connections/bitbucket/${connectionId}/workspaces`
|
||||
);
|
||||
|
||||
return data.workspaces;
|
||||
},
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
export const useBitbucketConnectionListRepositories = (
|
||||
connectionId: string,
|
||||
workspaceSlug: string,
|
||||
options?: Omit<
|
||||
UseQueryOptions<
|
||||
TBitbucketRepo[],
|
||||
unknown,
|
||||
TBitbucketRepo[],
|
||||
// The ReturnType here will be a supertype of the actual queryKey, which is acceptable
|
||||
ReturnType<typeof bitBucketConnectionKeys.listRepos>
|
||||
>,
|
||||
"queryKey" | "queryFn"
|
||||
>
|
||||
) => {
|
||||
return useQuery({
|
||||
queryKey: bitBucketConnectionKeys.listRepos(connectionId),
|
||||
// Append workspaceSlug to the existing query key for unique caching
|
||||
queryKey: bitBucketConnectionKeys.listRepos(connectionId, workspaceSlug),
|
||||
queryFn: async () => {
|
||||
const { data } = await apiRequest.get<TBitBucketConnectionListRepositoriesResponse>(
|
||||
`/api/v1/app-connections/bitbucket/${connectionId}/repositories`
|
||||
const { data } = await apiRequest.get<TBitbucketConnectionListRepositoriesResponse>(
|
||||
// Include workspaceSlug in the API endpoint path
|
||||
`/api/v1/app-connections/bitbucket/${connectionId}/repositories?workspaceSlug=${workspaceSlug}`
|
||||
);
|
||||
|
||||
return data.repositories;
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
export type TBitBucketRepo = {
|
||||
id: string;
|
||||
name: string; // workspace-slug/repo-slug
|
||||
export type TBitbucketWorkspace = {
|
||||
slug: string;
|
||||
};
|
||||
|
||||
export type TBitBucketConnectionListRepositoriesResponse = {
|
||||
repositories: TBitBucketRepo[];
|
||||
export type TBitbucketRepo = {
|
||||
slug: string;
|
||||
full_name: string; // workspace-slug/repo-slug
|
||||
};
|
||||
|
||||
export type TBitbucketConnectionListWorkspacesResponse = {
|
||||
workspaces: TBitbucketWorkspace[];
|
||||
};
|
||||
|
||||
export type TBitbucketConnectionListRepositoriesResponse = {
|
||||
repositories: TBitbucketRepo[];
|
||||
};
|
||||
|
||||
@@ -28,5 +28,5 @@ export enum AppConnection {
|
||||
Flyio = "flyio",
|
||||
Gitlab = "gitlab",
|
||||
Cloudflare = "cloudflare",
|
||||
BitBucket = "bitbucket"
|
||||
Bitbucket = "bitbucket"
|
||||
}
|
||||
|
||||
@@ -132,8 +132,8 @@ export type TCloudflareConnectionOption = TAppConnectionOptionBase & {
|
||||
app: AppConnection.Cloudflare;
|
||||
};
|
||||
|
||||
export type TBitBucketConnectionOption = TAppConnectionOptionBase & {
|
||||
app: AppConnection.BitBucket;
|
||||
export type TBitbucketConnectionOption = TAppConnectionOptionBase & {
|
||||
app: AppConnection.Bitbucket;
|
||||
};
|
||||
|
||||
export type TAppConnectionOption =
|
||||
@@ -164,7 +164,7 @@ export type TAppConnectionOption =
|
||||
| TFlyioConnectionOption
|
||||
| TGitlabConnectionOption
|
||||
| TCloudflareConnectionOption
|
||||
| TBitBucketConnectionOption;
|
||||
| TBitbucketConnectionOption;
|
||||
|
||||
export type TAppConnectionOptionMap = {
|
||||
[AppConnection.AWS]: TAwsConnectionOption;
|
||||
@@ -196,5 +196,5 @@ export type TAppConnectionOptionMap = {
|
||||
[AppConnection.Flyio]: TFlyioConnectionOption;
|
||||
[AppConnection.Gitlab]: TGitlabConnectionOption;
|
||||
[AppConnection.Cloudflare]: TCloudflareConnectionOption;
|
||||
[AppConnection.BitBucket]: TBitBucketConnectionOption;
|
||||
[AppConnection.Bitbucket]: TBitbucketConnectionOption;
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { AppConnection } from "@app/hooks/api/appConnections/enums";
|
||||
import { TRootAppConnection } from "@app/hooks/api/appConnections/types/root-connection";
|
||||
|
||||
export enum BitBucketConnectionMethod {
|
||||
export enum BitbucketConnectionMethod {
|
||||
ApiToken = "api-token"
|
||||
}
|
||||
|
||||
export type TBitBucketConnection = TRootAppConnection & { app: AppConnection.BitBucket } & {
|
||||
method: BitBucketConnectionMethod.ApiToken;
|
||||
export type TBitbucketConnection = TRootAppConnection & { app: AppConnection.Bitbucket } & {
|
||||
method: BitbucketConnectionMethod.ApiToken;
|
||||
credentials: {
|
||||
email: string;
|
||||
apiToken: string;
|
||||
|
||||
@@ -7,7 +7,7 @@ import { TAzureAppConfigurationConnection } from "./azure-app-configuration-conn
|
||||
import { TAzureClientSecretsConnection } from "./azure-client-secrets-connection";
|
||||
import { TAzureDevOpsConnection } from "./azure-devops-connection";
|
||||
import { TAzureKeyVaultConnection } from "./azure-key-vault-connection";
|
||||
import { TBitBucketConnection } from "./bitbucket-connection";
|
||||
import { TBitbucketConnection } from "./bitbucket-connection";
|
||||
import { TCamundaConnection } from "./camunda-connection";
|
||||
import { TCloudflareConnection } from "./cloudflare-connection";
|
||||
import { TDatabricksConnection } from "./databricks-connection";
|
||||
@@ -92,7 +92,7 @@ export type TAppConnection =
|
||||
| TFlyioConnection
|
||||
| TGitLabConnection
|
||||
| TCloudflareConnection
|
||||
| TBitBucketConnection;
|
||||
| TBitbucketConnection;
|
||||
|
||||
export type TAvailableAppConnection = Pick<TAppConnection, "name" | "id">;
|
||||
|
||||
@@ -149,5 +149,5 @@ export type TAppConnectionMap = {
|
||||
[AppConnection.Flyio]: TFlyioConnection;
|
||||
[AppConnection.Gitlab]: TGitLabConnection;
|
||||
[AppConnection.Cloudflare]: TCloudflareConnection;
|
||||
[AppConnection.BitBucket]: TBitBucketConnection;
|
||||
[AppConnection.Bitbucket]: TBitbucketConnection;
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@ export {
|
||||
useDeleteIntegrationAuth,
|
||||
useDeleteIntegrationAuths,
|
||||
useGetIntegrationAuthApps,
|
||||
useGetIntegrationAuthBitBucketWorkspaces,
|
||||
useGetIntegrationAuthBitbucketWorkspaces,
|
||||
useGetIntegrationAuthById,
|
||||
useGetIntegrationAuthChecklyGroups,
|
||||
useGetIntegrationAuthCircleCIOrganizations,
|
||||
|
||||
@@ -6,8 +6,8 @@ import { TReactQueryOptions } from "@app/types/reactQuery";
|
||||
import { workspaceKeys } from "../workspace";
|
||||
import {
|
||||
App,
|
||||
BitBucketEnvironment,
|
||||
BitBucketWorkspace,
|
||||
BitbucketEnvironment,
|
||||
BitbucketWorkspace,
|
||||
ChecklyGroup,
|
||||
CircleCIOrganization,
|
||||
Environment,
|
||||
@@ -98,9 +98,9 @@ const integrationAuthKeys = {
|
||||
integrationAuthId: string;
|
||||
appId: string;
|
||||
}) => [{ integrationAuthId, appId }, "integrationAuthRailwayServices"] as const,
|
||||
getIntegrationAuthBitBucketWorkspaces: (integrationAuthId: string) =>
|
||||
getIntegrationAuthBitbucketWorkspaces: (integrationAuthId: string) =>
|
||||
[{ integrationAuthId }, "integrationAuthBitbucketWorkspaces"] as const,
|
||||
getIntegrationAuthBitBucketEnvironments: (
|
||||
getIntegrationAuthBitbucketEnvironments: (
|
||||
integrationAuthId: string,
|
||||
workspaceSlug: string,
|
||||
repoSlug: string
|
||||
@@ -446,23 +446,23 @@ const fetchIntegrationAuthRailwayServices = async ({
|
||||
return services;
|
||||
};
|
||||
|
||||
const fetchIntegrationAuthBitBucketWorkspaces = async (integrationAuthId: string) => {
|
||||
const fetchIntegrationAuthBitbucketWorkspaces = async (integrationAuthId: string) => {
|
||||
const {
|
||||
data: { workspaces }
|
||||
} = await apiRequest.get<{ workspaces: BitBucketWorkspace[] }>(
|
||||
} = await apiRequest.get<{ workspaces: BitbucketWorkspace[] }>(
|
||||
`/api/v1/integration-auth/${integrationAuthId}/bitbucket/workspaces`
|
||||
);
|
||||
return workspaces;
|
||||
};
|
||||
|
||||
const fetchIntegrationAuthBitBucketEnvironments = async (
|
||||
const fetchIntegrationAuthBitbucketEnvironments = async (
|
||||
integrationAuthId: string,
|
||||
workspaceSlug: string,
|
||||
repoSlug: string
|
||||
) => {
|
||||
const {
|
||||
data: { environments }
|
||||
} = await apiRequest.get<{ environments: BitBucketEnvironment[] }>(
|
||||
} = await apiRequest.get<{ environments: BitbucketEnvironment[] }>(
|
||||
`/api/v1/integration-auth/${integrationAuthId}/bitbucket/environments`,
|
||||
{
|
||||
params: {
|
||||
@@ -833,10 +833,10 @@ export const useGetIntegrationAuthRailwayServices = ({
|
||||
});
|
||||
};
|
||||
|
||||
export const useGetIntegrationAuthBitBucketWorkspaces = (integrationAuthId: string) => {
|
||||
export const useGetIntegrationAuthBitbucketWorkspaces = (integrationAuthId: string) => {
|
||||
return useQuery({
|
||||
queryKey: integrationAuthKeys.getIntegrationAuthBitBucketWorkspaces(integrationAuthId),
|
||||
queryFn: () => fetchIntegrationAuthBitBucketWorkspaces(integrationAuthId),
|
||||
queryKey: integrationAuthKeys.getIntegrationAuthBitbucketWorkspaces(integrationAuthId),
|
||||
queryFn: () => fetchIntegrationAuthBitbucketWorkspaces(integrationAuthId),
|
||||
enabled: true
|
||||
});
|
||||
};
|
||||
@@ -858,7 +858,7 @@ export const useGetIntegrationAuthOctopusDeployScopeValues = (
|
||||
...options
|
||||
});
|
||||
|
||||
export const useGetIntegrationAuthBitBucketEnvironments = (
|
||||
export const useGetIntegrationAuthBitbucketEnvironments = (
|
||||
{
|
||||
integrationAuthId,
|
||||
workspaceSlug,
|
||||
@@ -871,13 +871,13 @@ export const useGetIntegrationAuthBitBucketEnvironments = (
|
||||
options?: TReactQueryOptions["options"]
|
||||
) => {
|
||||
return useQuery({
|
||||
queryKey: integrationAuthKeys.getIntegrationAuthBitBucketEnvironments(
|
||||
queryKey: integrationAuthKeys.getIntegrationAuthBitbucketEnvironments(
|
||||
integrationAuthId,
|
||||
workspaceSlug,
|
||||
repoSlug
|
||||
),
|
||||
queryFn: () =>
|
||||
fetchIntegrationAuthBitBucketEnvironments(integrationAuthId, workspaceSlug, repoSlug),
|
||||
fetchIntegrationAuthBitbucketEnvironments(integrationAuthId, workspaceSlug, repoSlug),
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
@@ -78,13 +78,13 @@ export type Service = {
|
||||
serviceId: string;
|
||||
};
|
||||
|
||||
export type BitBucketWorkspace = {
|
||||
export type BitbucketWorkspace = {
|
||||
uuid: string;
|
||||
name: string;
|
||||
slug: string;
|
||||
};
|
||||
|
||||
export type BitBucketEnvironment = {
|
||||
export type BitbucketEnvironment = {
|
||||
uuid: string;
|
||||
name: string;
|
||||
slug: string;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export enum SecretScanningDataSource {
|
||||
GitHub = "github",
|
||||
BitBucket = "bitbucket"
|
||||
Bitbucket = "bitbucket"
|
||||
}
|
||||
|
||||
export enum SecretScanningScanStatus {
|
||||
|
||||
@@ -3,15 +3,15 @@ import { AppConnection } from "@app/hooks/api/appConnections/enums";
|
||||
import { SecretScanningDataSource } from "../enums";
|
||||
import { TSecretScanningDataSourceBase } from "./shared";
|
||||
|
||||
export type TBitBucketDataSource = TSecretScanningDataSourceBase & {
|
||||
type: SecretScanningDataSource.BitBucket;
|
||||
export type TBitbucketDataSource = TSecretScanningDataSourceBase & {
|
||||
type: SecretScanningDataSource.Bitbucket;
|
||||
config: {
|
||||
includeRepos: string[];
|
||||
};
|
||||
};
|
||||
|
||||
export type TBitBucketDataSourceOption = {
|
||||
export type TBitbucketDataSourceOption = {
|
||||
name: string;
|
||||
type: SecretScanningDataSource.BitBucket;
|
||||
connection: AppConnection.BitBucket;
|
||||
type: SecretScanningDataSource.Bitbucket;
|
||||
connection: AppConnection.Bitbucket;
|
||||
};
|
||||
|
||||
@@ -8,10 +8,10 @@ import {
|
||||
SecretScanningScanStatus,
|
||||
SecretScanningScanType
|
||||
} from "../enums";
|
||||
import { TBitBucketDataSource, TBitBucketDataSourceOption } from "./bitbucket-data-source";
|
||||
import { TBitbucketDataSource, TBitbucketDataSourceOption } from "./bitbucket-data-source";
|
||||
import { TGitHubDataSource, TGitHubDataSourceOption } from "./github-data-source";
|
||||
|
||||
export type TSecretScanningDataSource = TGitHubDataSource | TBitBucketDataSource;
|
||||
export type TSecretScanningDataSource = TGitHubDataSource | TBitbucketDataSource;
|
||||
|
||||
export type TSecretScanningDataSourceWithDetails = TSecretScanningDataSource & {
|
||||
lastScannedAt: string | null;
|
||||
@@ -24,7 +24,7 @@ export type TListSecretScanningDataSources = {
|
||||
dataSources: TSecretScanningDataSourceWithDetails[];
|
||||
};
|
||||
|
||||
export type TSecretScanningDataSourceOption = TGitHubDataSourceOption | TBitBucketDataSourceOption;
|
||||
export type TSecretScanningDataSourceOption = TGitHubDataSourceOption | TBitbucketDataSourceOption;
|
||||
|
||||
export type TListSecretScanningDataSourceOptions = {
|
||||
dataSourceOptions: TSecretScanningDataSourceOption[];
|
||||
|
||||
Reference in New Issue
Block a user