Skip to content

Commit

Permalink
feat: updated API call in client
Browse files Browse the repository at this point in the history
  • Loading branch information
antoniomuso committed Jan 19, 2023
1 parent 1374ea0 commit 6300447
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 28 deletions.
2 changes: 1 addition & 1 deletion packages/gitlab-backend/src/processor/processor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export class GitlabFillerProcessor implements CatalogProcessor {
): Promise<Entity> {
if (
location.type === 'url' &&
// To make annotation constants
// TODO: make annotation constants
!entity.metadata.annotations?.['gitlab.com/project-id'] &&
!entity.metadata.annotations?.['gitlab.com/project-slug'] &&
this.allowedKinds.has(entity.kind.toLowerCase()) &&
Expand Down
6 changes: 5 additions & 1 deletion packages/gitlab/src/api/GitlabCIApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,14 @@ export interface IssuesSummary {
getIssuesData: IssueObject[];
}

export const GitlabCIApiRef = createApiRef<GitlabCIApi>({
export const GitlabCIApiRef = createApiRef<GitlabCIBuilder>({
id: 'plugin.gitlabci.service',
});

export type GitlabCIBuilder = {
build(gitlabInstance: string): GitlabCIApi;
};

export type GitlabCIApi = {
getPipelineSummary(projectID: string): Promise<PipelineSummary | undefined>;
getContributorsSummary(
Expand Down
37 changes: 30 additions & 7 deletions packages/gitlab/src/api/GitlabCIClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,32 +20,55 @@ import {
export class GitlabCIClient implements GitlabCIApi {
discoveryApi: DiscoveryApi;
baseUrl: string;
proxyPath: string;
codeOwnersPath: string;
gitlabInstance: string;

constructor({
private constructor({
discoveryApi,
baseUrl = 'https://gitlab.com/',
proxyPath,
codeOwnersPath,
gitlabInstance,
}: {
discoveryApi: DiscoveryApi;
baseUrl?: string;
proxyPath?: string;
codeOwnersPath?: string;
gitlabInstance: string;
}) {
this.discoveryApi = discoveryApi;
this.baseUrl = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
this.proxyPath = proxyPath || '/gitlabci';
this.codeOwnersPath = codeOwnersPath || 'CODEOWNERS';
this.gitlabInstance = gitlabInstance;
}

static setupAPI({
discoveryApi,
baseUrl = 'https://gitlab.com/',
codeOwnersPath,
}: {
discoveryApi: DiscoveryApi;
baseUrl?: string;
codeOwnersPath?: string;
}) {
return {
build: (gitlabInstance: string) =>
new GitlabCIClient({
discoveryApi,
baseUrl,
codeOwnersPath,
gitlabInstance,
}),
};
}

protected async callApi<T>(
path: string,
query: { [key in string]: any }
): Promise<T | null> {
const apiUrl = `${await this.discoveryApi.getBaseUrl('proxy')}${
this.proxyPath
//const apiUrl = `${await this.discoveryApi.getBaseUrl('proxy')}${
// this.proxyPath
//}`;
const apiUrl = `${await this.discoveryApi.getBaseUrl('gitlab')}/${
this.gitlabInstance
}`;
const response = await fetch(
`${apiUrl}/${path}?${new URLSearchParams(query).toString()}`
Expand Down
6 changes: 4 additions & 2 deletions packages/gitlab/src/components/gitlabAppData.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,12 @@ export const gitlabAppData = () => {
export const gitlabAppSlug = () => {
const { entity } = useEntity();

const project_slug =
const data =
entity.metadata.annotations?.[GITLAB_ANNOTATION_PROJECT_SLUG] ?? '';

return { project_slug };
const [project_slug, gitlab_instance] = data.split('@').reverse();

return { project_slug, gitlab_instance };
};

export const gitlabCodeOwnerPath = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ export const DenseTable = ({

export const IssuesTable = ({}) => {
const { project_id } = gitlabAppData();
const { project_slug } = gitlabAppSlug();
const { project_slug, gitlab_instance } = gitlabAppSlug();

const GitlabCIAPI = useApi(GitlabCIApiRef);
const GitlabCIAPI = useApi(GitlabCIApiRef).build(gitlab_instance || '0');

const { value, loading, error } = useAsync(async (): Promise<{
data: IssueObject[];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,10 @@ export const LanguagesCard = ({}) => {
const classes = useStyles();
let barWidth = 0;
let languageTitle = new String();
const GitlabCIAPI = useApi(GitlabCIApiRef);
const { project_id } = gitlabAppData();
const { project_slug } = gitlabAppSlug();
const { project_slug, gitlab_instance } = gitlabAppSlug();

const GitlabCIAPI = useApi(GitlabCIApiRef).build(gitlab_instance || '0');

const { value, loading, error } = useAsync(async (): Promise<Language> => {
const projectDetails: any = await GitlabCIAPI.getProjectDetails(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ const MergeRequestStats = (props: Props) => {
const [count, setCount] = useState<number>(20);
const classes = useStyles();
const { project_id } = gitlabAppData();
const { project_slug } = gitlabAppSlug();
const { project_slug, gitlab_instance } = gitlabAppSlug();

const GitlabCIAPI = useApi(GitlabCIApiRef);
const GitlabCIAPI = useApi(GitlabCIApiRef).build(gitlab_instance || '0');
const mergeStat: MergeRequestStatsCount = {
avgTimeUntilMerge: 0,
closedCount: 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ export const DenseTable = ({ mergeRequests }: any) => {

export const MergeRequestsTable = ({}) => {
const { project_id } = gitlabAppData();
const { project_slug } = gitlabAppSlug();
const { project_slug, gitlab_instance } = gitlabAppSlug();

const GitlabCIAPI = useApi(GitlabCIApiRef);
const GitlabCIAPI = useApi(GitlabCIApiRef).build(gitlab_instance || '0');

const { value, loading, error } = useAsync(async (): Promise<
MergeRequest[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ const useStyles = makeStyles((theme) => ({

export const PeopleCard = ({}) => {
const classes = useStyles();
const GitlabCIAPI = useApi(GitlabCIApiRef);
const { project_id } = gitlabAppData();
const { project_slug } = gitlabAppSlug();
const { project_slug, gitlab_instance } = gitlabAppSlug();

const GitlabCIAPI = useApi(GitlabCIApiRef).build(gitlab_instance || '0');
const { codeowners_path } = gitlabCodeOwnerPath();
/* TODO: to change the below logic to get contributors data*/
const { value, loading, error } = useAsync(async (): Promise<{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ export const DenseTable = ({ pipelineObjects }: any) => {

export const PipelinesTable = ({}) => {
const { project_id } = gitlabAppData();
const { project_slug } = gitlabAppSlug();
const { project_slug, gitlab_instance } = gitlabAppSlug();

const GitlabCIAPI = useApi(GitlabCIApiRef);
const GitlabCIAPI = useApi(GitlabCIApiRef).build(gitlab_instance || '0');

const { value, loading, error } = useAsync(async (): Promise<
PipelineObject[]
Expand Down
8 changes: 3 additions & 5 deletions packages/gitlab/src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,14 @@ export const gitlabPlugin = createPlugin({
createApiFactory({
api: GitlabCIApiRef,
deps: { configApi: configApiRef, discoveryApi: discoveryApiRef },
factory: ({ configApi, discoveryApi }) => {
return new GitlabCIClient({
factory: ({ configApi, discoveryApi }) =>
GitlabCIClient.setupAPI({
discoveryApi,
baseUrl: configApi.getOptionalString('gitlab.baseUrl'),
proxyPath: configApi.getOptionalString('gitlab.proxyPath'),
codeOwnersPath: configApi.getOptionalString(
'gitlab.defaultCodeOwnersPath'
),
});
},
}),
}),
],
});
Expand Down

0 comments on commit 6300447

Please sign in to comment.