Add fallback for iconv buffer decoding

376e1f4ca2f332d545fcaac124f344fc61dbe6f9

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +15 -1Ignore whitespace
src/endpoints/translate.js+15 -1
@@ -9,6 +9,20 @@ const { jsonParser } = require('../express-common');
99const DEEPLX_URL_DEFAULT = 'http://127.0.0.1:1188/translate';
1010const ONERING_URL_DEFAULT = 'http://127.0.0.1:4990/translate';
1111
12+/**
13+ * Tries to decode a Node.js Buffer to a string using iconv-lite for UTF-8.
14+ * @param {Buffer} buffer Node.js Buffer
15+ * @returns {string} Decoded string
16+ */
17+function decodeBuffer(buffer) {
18+ try {
19+ return iconv.decode(buffer, 'utf-8');
20+ } catch (error) {
21+ console.log('Failed to decode buffer:', error);
22+ return buffer.toString('utf-8');
23+ }
24+}
25+
1226const router = express.Router();
1327
1428router.post('/libre', jsonParser, async (request, response) => {
@@ -89,7 +103,7 @@ router.post('/google', jsonParser, async (request, response) => {
89103
90104 resp.on('end', () => {
91105 try {
92106 const decodedData = iconv.decodedecodeBuffer(Buffer.concat(data), 'utf-8');
93107 const result = normaliseResponse(JSON.parse(decodedData));
94108 console.log('Translated text: ' + result.text);
95109 response.setHeader('Content-Type', 'text/plain; charset=utf-8');