Files
vscode-codeql/extensions/ql-vscode/src/mocks/gh-api-request.ts
2023-02-17 11:38:24 +01:00

105 lines
2.7 KiB
TypeScript

import { Repository } from "../variant-analysis/gh-api/repository";
import {
VariantAnalysis,
VariantAnalysisRepoTask,
} from "../variant-analysis/gh-api/variant-analysis";
// Types that represent requests/responses from the GitHub API
// that we need to mock.
export enum RequestKind {
GetRepo = "getRepo",
SubmitVariantAnalysis = "submitVariantAnalysis",
GetVariantAnalysis = "getVariantAnalysis",
GetVariantAnalysisRepo = "getVariantAnalysisRepo",
GetVariantAnalysisRepoResult = "getVariantAnalysisRepoResult",
}
export interface BasicErorResponse {
message: string;
}
export interface GetRepoRequest {
request: {
kind: RequestKind.GetRepo;
};
response: {
status: number;
body: Repository | BasicErorResponse | undefined;
};
}
export interface SubmitVariantAnalysisRequest {
request: {
kind: RequestKind.SubmitVariantAnalysis;
};
response: {
status: number;
body?: VariantAnalysis | BasicErorResponse;
};
}
export interface GetVariantAnalysisRequest {
request: {
kind: RequestKind.GetVariantAnalysis;
};
response: {
status: number;
body?: VariantAnalysis | BasicErorResponse;
};
}
export interface GetVariantAnalysisRepoRequest {
request: {
kind: RequestKind.GetVariantAnalysisRepo;
repositoryId: number;
};
response: {
status: number;
body?: VariantAnalysisRepoTask | BasicErorResponse;
};
}
export interface GetVariantAnalysisRepoResultRequest {
request: {
kind: RequestKind.GetVariantAnalysisRepoResult;
repositoryId: number;
};
response: {
status: number;
body?: Buffer | string;
contentType: string;
};
}
export type GitHubApiRequest =
| GetRepoRequest
| SubmitVariantAnalysisRequest
| GetVariantAnalysisRequest
| GetVariantAnalysisRepoRequest
| GetVariantAnalysisRepoResultRequest;
export const isGetRepoRequest = (
request: GitHubApiRequest,
): request is GetRepoRequest => request.request.kind === RequestKind.GetRepo;
export const isSubmitVariantAnalysisRequest = (
request: GitHubApiRequest,
): request is SubmitVariantAnalysisRequest =>
request.request.kind === RequestKind.SubmitVariantAnalysis;
export const isGetVariantAnalysisRequest = (
request: GitHubApiRequest,
): request is GetVariantAnalysisRequest =>
request.request.kind === RequestKind.GetVariantAnalysis;
export const isGetVariantAnalysisRepoRequest = (
request: GitHubApiRequest,
): request is GetVariantAnalysisRepoRequest =>
request.request.kind === RequestKind.GetVariantAnalysisRepo;
export const isGetVariantAnalysisRepoResultRequest = (
request: GitHubApiRequest,
): request is GetVariantAnalysisRepoResultRequest =>
request.request.kind === RequestKind.GetVariantAnalysisRepoResult;