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

add branch add_export_route

parent 7aa9e1e0
No related branches found
No related tags found
No related merge requests found
Pipeline #33194 failed
......@@ -3,7 +3,7 @@ import { StatusCodes }
import GitlabVisibility from '../shared/types/Gitlab/GitlabVisibility.js';
import express from 'express';
import SharedConfig from '../shared/config/SharedConfig.js';
import { CommitSchema, ExpandedUserSchema, Gitlab, MemberSchema, ProjectBadgeSchema, ProjectSchema, ReleaseSchema, RepositoryFileExpandedSchema, RepositoryFileSchema, RepositoryTreeSchema } from '@gitbeaker/rest';
import { ArchiveType, CommitSchema, ExpandedUserSchema, Gitlab, MemberSchema, ProjectBadgeSchema, ProjectSchema, ReleaseSchema, RepositoryFileExpandedSchema, RepositoryFileSchema, RepositoryTreeSchema } from '@gitbeaker/rest';
import logger from '../shared/logging/WinstonLogger.js';
import { AccessLevel, EditProjectOptions, ProjectVariableSchema, ProtectedBranchAccessLevel, ProtectedBranchSchema } from '@gitbeaker/core';
import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode.js';
......@@ -267,6 +267,17 @@ class GitlabManager extends SharedGitlabManager {
return Promise.reject(e);
}
}
async exportRepository(repoId: number, extension: ArchiveType): Promise<Blob> {
try {
return await this.api.Repositories.showArchive(repoId, {
fileType: extension
});
} catch ( e ) {
logger.error(JSON.stringify(e));
return Promise.reject(e);
}
}
}
......
......@@ -80,6 +80,7 @@ class AssignmentRoutes implements RoutesManager {
backend.post('/assignments/:assignmentNameOrUrl/corrections', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), ParamsValidatorMiddleware.validate(this.assignmentAddCorrigeValidator), this.linkUpdateAssignmentCorrection(false).bind(this) as RequestHandler);
backend.patch('/assignments/:assignmentNameOrUrl/corrections/:exerciseIdOrUrl', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), ParamsValidatorMiddleware.validate(this.assignmentUpdateCorrigeValidator), this.linkUpdateAssignmentCorrection(true).bind(this) as RequestHandler);
backend.delete('/assignments/:assignmentNameOrUrl/corrections/:exerciseIdOrUrl', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.unlinkAssignmentCorrection.bind(this) as RequestHandler);
backend.get('/assignments/:assignmentNameOrUrl/export', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.exportAssignment.bind(this) as RequestHandler);
}
// Get an assignment by its name or gitlab url
......@@ -299,6 +300,12 @@ class AssignmentRoutes implements RoutesManager {
return req.session.sendResponse(res, StatusCodes.OK);
}
private async exportAssignment(req: express.Request, res: express.Response) {
let ext : Gitlab.ArchiveType = 'zip';
await GitlabManager.exportRepository(req.boundParams.assignment!.gitlabId, ext);
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