-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
72 lines (60 loc) · 2.09 KB
/
Copy pathindex.js
File metadata and controls
72 lines (60 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env node
const express = require("express");
const { loadConfig } = require("./lib/config");
const { createCorsMiddleware, errorHandler } = require("./lib/middleware");
const { healthCheck } = require("./lib/routes");
const {
handleDocumentUpload,
handleDocumentStatus,
handleDocumentDownload,
createDeeplProxy,
upload,
} = require("./lib/proxy");
const config = loadConfig();
const baseUrl = config.deepl.base_url;
const app = express();
app.use(createCorsMiddleware());
app.use(express.urlencoded({ extended: true }));
app.get("/health", (req, res) =>
healthCheck(req, res, config.deepl.api_key, baseUrl)
);
app.post(
"/v2/document",
upload.single("file"),
(req, res, next) =>
handleDocumentUpload(req, res, config.deepl.api_key, baseUrl, next),
);
app.post("/v2/document/:documentId", (req, res, next) =>
handleDocumentStatus(req, res, config.deepl.api_key, baseUrl, next),
);
app.post("/v2/document/:documentId/result", (req, res, next) =>
handleDocumentDownload(req, res, config.deepl.api_key, baseUrl, next),
);
// Proxy all other DeepL API requests
const deeplProxy = createDeeplProxy(config.deepl.api_key, baseUrl);
app.use(deeplProxy);
// Error handling middleware (must be last)
app.use(errorHandler);
// Use 0.0.0.0 in Docker, 127.0.0.1 locally for security
const host = process.env.HOST || "127.0.0.1";
const port = config.server.port;
const server = app.listen(port, host, () => {
console.log("===================================");
console.log("DeepL API Proxy");
console.log("===================================\n");
console.log(`Proxy: http://${host}:${port}`);
console.log("\nPress Ctrl+C to stop\n");
});
server.on("error", (err) => {
if (err.code === "EADDRINUSE") {
console.error(`\nERROR: Port ${port} is already in use`);
console.error(`\nTo fix this:`);
console.error(` 1. Stop the process using port ${port}`);
console.error(` 2. Or edit config.json and change the port number`);
console.error(` 3. Then restart the proxy\n`);
process.exit(1);
} else {
console.error("Server error:", err);
process.exit(1);
}
});