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');
9const DEEPLX_URL_DEFAULT = 'http://127.0.0.1:1188/translate';9const DEEPLX_URL_DEFAULT = 'http://127.0.0.1:1188/translate';
10const ONERING_URL_DEFAULT = 'http://127.0.0.1:4990/translate';10const 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 */
17function 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
12const router = express.Router();26const router = express.Router();
1327
14router.post('/libre', jsonParser, async (request, response) => {28router.post('/libre', jsonParser, async (request, response) => {
@@ -89,7 +103,7 @@ router.post('/google', jsonParser, async (request, response) => {
89103
90 resp.on('end', () => {104 resp.on('end', () => {
91 try {105 try {
92 const decodedData = iconv.decode(Buffer.concat(data), 'utf-8');106 const decodedData = decodeBuffer(Buffer.concat(data));
93 const result = normaliseResponse(JSON.parse(decodedData));107 const result = normaliseResponse(JSON.parse(decodedData));
94 console.log('Translated text: ' + result.text);108 console.log('Translated text: ' + result.text);
95 response.setHeader('Content-Type', 'text/plain; charset=utf-8');109 response.setHeader('Content-Type', 'text/plain; charset=utf-8');