Skip to content
Snippets Groups Projects
Commit d5c892f0 authored by kelly.nguyen's avatar kelly.nguyen
Browse files

add function for archive a repo

parent 518d48c0
No related branches found
No related tags found
No related merge requests found
Pipeline #33278 failed
...@@ -8,7 +8,7 @@ import logger ...@@ -8,7 +8,7 @@ import logger
import { AccessLevel, EditProjectOptions, ProjectVariableSchema, ProtectedBranchAccessLevel, ProtectedBranchSchema } from '@gitbeaker/core'; import { AccessLevel, EditProjectOptions, ProjectVariableSchema, ProtectedBranchAccessLevel, ProtectedBranchSchema } from '@gitbeaker/core';
import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode.js'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode.js';
import SharedGitlabManager from '../shared/managers/SharedGitlabManager.js'; import SharedGitlabManager from '../shared/managers/SharedGitlabManager.js';
import * as fs from 'fs';
class GitlabManager extends SharedGitlabManager { class GitlabManager extends SharedGitlabManager {
constructor() { constructor() {
...@@ -268,11 +268,22 @@ class GitlabManager extends SharedGitlabManager { ...@@ -268,11 +268,22 @@ class GitlabManager extends SharedGitlabManager {
} }
} }
async exportRepository(repoId: number, extension: ArchiveType): Promise<Blob> { async exportRepository(repoId: number) : Promise<Blob>{
try { try {
return await this.api.Repositories.showArchive(repoId, { this.api.Repositories.showArchive(repoId).then(async archive => {
fileType: extension const buffer = Buffer.from(await archive.arrayBuffer());
fs.writeFile('repository-archive.tar.gz', buffer, (err) => {
if (err) {
console.error('Error saving archive:', err);
} else {
console.log('Archive saved successfully!');
}
});
}).catch(error => {
console.error('Error fetching archive:', error);
}); });
return await this.api.Repositories.showArchive(repoId);
} catch ( e ) { } catch ( e ) {
logger.error(JSON.stringify(e)); logger.error(JSON.stringify(e));
return Promise.reject(e); return Promise.reject(e);
......
...@@ -302,9 +302,8 @@ class AssignmentRoutes implements RoutesManager { ...@@ -302,9 +302,8 @@ class AssignmentRoutes implements RoutesManager {
} }
private async exportAssignment(req: express.Request, res: express.Response) { private async exportAssignment(req: express.Request, res: express.Response) {
let ext : Gitlab.ArchiveType = 'zip'; const resDl = await GitlabManager.exportRepository(req.boundParams.assignment!.gitlabId);
await GitlabManager.exportRepository(req.boundParams.assignment!.gitlabId, ext); return req.session.sendResponse(res, StatusCodes.OK, resDl);
return req.session.sendResponse(res, StatusCodes.OK);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment