diff --git a/src/queue/processes/downloadRepository.ts b/src/queue/processes/downloadRepository.ts index 4ca4da1..4eb5a99 100644 --- a/src/queue/processes/downloadRepository.ts +++ b/src/queue/processes/downloadRepository.ts @@ -84,8 +84,9 @@ export default async function (job: SandboxedJob) { } catch { /* ignored */ } } logger.error("finished with error", { + ...serializeError(error), repoId: job.data.repoId, - err: serializeError(error), + url: `/api/repo/${job.data.repoId}`, }); try { await repo.updateStatus( @@ -94,8 +95,9 @@ export default async function (job: SandboxedJob) { ); } catch (persistError) { logger.error("failed to persist ERROR status", { + ...serializeError(persistError), repoId: job.data.repoId, - err: serializeError(persistError), + url: `/api/repo/${job.data.repoId}`, }); } throw error; diff --git a/src/server/routes/repository-private.ts b/src/server/routes/repository-private.ts index 8449379..a111450 100644 --- a/src/server/routes/repository-private.ts +++ b/src/server/routes/repository-private.ts @@ -304,6 +304,7 @@ router.get("/:repoId/", async (req: express.Request, res: express.Response) => { function validateNewRepo(repoUpdate: any): void { const validCharacters = /^[0-9a-zA-Z\-_]+$/; if ( + typeof repoUpdate.repoId !== "string" || !repoUpdate.repoId.match(validCharacters) || repoUpdate.repoId.length < 3 ) { @@ -312,6 +313,12 @@ function validateNewRepo(repoUpdate: any): void { httpStatus: 400, }); } + if (!repoUpdate.source) { + throw new AnonymousError("source_not_provided", { + object: repoUpdate, + httpStatus: 400, + }); + } if (!repoUpdate.source.branch) { throw new AnonymousError("branch_not_specified", { object: repoUpdate,