From 952c3cc12f2d76bd2067d14a82a260f60c3a0b1a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 5 Apr 2024 20:58:31 +0300 Subject: [PATCH] server-ts: Convert routes/api/export --- src/routes/api/{export.js => export.ts} | 23 ++++++++++++++--------- src/routes/routes.js | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) rename src/routes/api/{export.js => export.ts} (64%) diff --git a/src/routes/api/export.js b/src/routes/api/export.ts similarity index 64% rename from src/routes/api/export.js rename to src/routes/api/export.ts index 4c098512b..499198aef 100644 --- a/src/routes/api/export.js +++ b/src/routes/api/export.ts @@ -1,14 +1,16 @@ "use strict"; -const zipExportService = require('../../services/export/zip'); -const singleExportService = require('../../services/export/single'); -const opmlExportService = require('../../services/export/opml'); -const becca = require('../../becca/becca'); -const TaskContext = require('../../services/task_context'); -const log = require('../../services/log'); -const NotFoundError = require('../../errors/not_found_error'); +import zipExportService = require('../../services/export/zip'); +import singleExportService = require('../../services/export/single'); +import opmlExportService = require('../../services/export/opml'); +import becca = require('../../becca/becca'); +import TaskContext = require('../../services/task_context'); +import log = require('../../services/log'); +import NotFoundError = require('../../errors/not_found_error'); +import { Request, Response } from 'express'; +import ValidationError = require('../../errors/validation_error'); -function exportBranch(req, res) { +function exportBranch(req: Request, res: Response) { const {branchId, type, format, version, taskId} = req.params; const branch = becca.getBranch(branchId); @@ -29,6 +31,9 @@ function exportBranch(req, res) { zipExportService.exportToZip(taskContext, branch, format, res); } else if (type === 'single') { + if (format !== "html" && format !== "markdown") { + throw new ValidationError("Invalid export type."); + } singleExportService.exportSingleNote(taskContext, branch, format, res); } else if (format === 'opml') { @@ -38,7 +43,7 @@ function exportBranch(req, res) { throw new NotFoundError(`Unrecognized export format '${format}'`); } } - catch (e) { + catch (e: any) { const message = `Export failed with following error: '${e.message}'. More details might be in the logs.`; taskContext.reportError(message); diff --git a/src/routes/routes.js b/src/routes/routes.js index 88d74beac..27330f25d 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -36,7 +36,7 @@ const syncApiRoute = require('./api/sync'); const loginApiRoute = require('./api/login.js'); const recentNotesRoute = require('./api/recent_notes.js'); const appInfoRoute = require('./api/app_info'); -const exportRoute = require('./api/export.js'); +const exportRoute = require('./api/export'); const importRoute = require('./api/import.js'); const setupApiRoute = require('./api/setup.js'); const sqlRoute = require('./api/sql');