@red-hat-developer-hub/backstage-plugin-bulk-import
Version:
111 lines (108 loc) • 3.95 kB
JavaScript
import { createApiRef } from '@backstage/core-plugin-api';
import { getApi } from '../utils/repository-utils.esm.js';
const bulkImportApiRef = createApiRef({
id: "plugin.bulk-import.service"
});
class BulkImportBackendClient {
// @ts-ignore
configApi;
identityApi;
constructor(options) {
this.configApi = options.configApi;
this.identityApi = options.identityApi;
}
async dataFetcher(page, size, searchString, options) {
const { token: idToken } = await this.identityApi.getCredentials();
const backendUrl = this.configApi.getString("backend.baseUrl");
const jsonResponse = await fetch(
getApi(backendUrl, page, size, searchString, options),
{
headers: {
"Content-Type": "application/json",
...idToken && { Authorization: `Bearer ${idToken}` }
}
}
);
if (jsonResponse.status !== 200 && jsonResponse.status !== 204) {
return jsonResponse;
}
return jsonResponse.json();
}
async getImportJobs(page, size, searchString, sortColumn, sortOrder) {
const { token: idToken } = await this.identityApi.getCredentials();
const backendUrl = this.configApi.getString("backend.baseUrl");
const jsonResponse = await fetch(
`${backendUrl}/api/bulk-import/imports?page=${page}&size=${size}&search=${searchString}&sortColumn=${sortColumn}&sortOrder=${sortOrder}`,
{
headers: {
"Content-Type": "application/json",
...idToken && { Authorization: `Bearer ${idToken}` },
"api-version": "v2"
}
}
);
if (!jsonResponse.ok) {
return jsonResponse;
}
return jsonResponse.status === 204 ? null : jsonResponse.json();
}
async createImportJobs(importRepositories, dryRun) {
const { token: idToken } = await this.identityApi.getCredentials();
const backendUrl = this.configApi.getString("backend.baseUrl");
const jsonResponse = await fetch(
dryRun ? `${backendUrl}/api/bulk-import/imports?dryRun=true` : `${backendUrl}/api/bulk-import/imports`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
...idToken && { Authorization: `Bearer ${idToken}` }
},
body: JSON.stringify(importRepositories)
}
);
if (!jsonResponse.ok) {
const errorResponse = await jsonResponse.json();
throw errorResponse;
}
return jsonResponse.status === 204 ? null : await jsonResponse.json();
}
async deleteImportAction(repo, defaultBranch) {
const { token: idToken } = await this.identityApi.getCredentials();
const backendUrl = this.configApi.getString("backend.baseUrl");
const jsonResponse = await fetch(
`${backendUrl}/api/bulk-import/import/by-repo?repo=${repo}&defaultBranch=${defaultBranch}`,
{
method: "DELETE",
headers: {
"Content-Type": "application/json",
...idToken && { Authorization: `Bearer ${idToken}` }
}
}
);
if (!jsonResponse.ok) {
const errorResponse = await jsonResponse.json();
throw errorResponse.err;
}
return jsonResponse.status === 204 ? null : await jsonResponse.json();
}
async getImportAction(repo, defaultBranch) {
const { token: idToken } = await this.identityApi.getCredentials();
const backendUrl = this.configApi.getString("backend.baseUrl");
const jsonResponse = await fetch(
`${backendUrl}/api/bulk-import/import/by-repo?repo=${repo}&defaultBranch=${defaultBranch}`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
...idToken && { Authorization: `Bearer ${idToken}` }
}
}
);
if (jsonResponse.status !== 200 && jsonResponse.status !== 204) {
return jsonResponse;
}
return jsonResponse.json();
}
}
export { BulkImportBackendClient, bulkImportApiRef };
//# sourceMappingURL=BulkImportBackendClient.esm.js.map