Sparser use of .error
| @@ -46,7 +46,7 @@ router.post('/caption-image', jsonParser, async (request, response) => { | |||
| 46 | 46 | ||
| 47 | if (!result.ok) { | 47 | if (!result.ok) { |
| 48 | const text = await result.text(); | 48 | const text = await result.text(); |
| 49 | console.error(`Claude API returned error: ${result.status} ${result.statusText}`, text); | 49 | console.warn(`Claude API returned error: ${result.status} ${result.statusText}`, text); |
| 50 | return response.status(result.status).send({ error: true }); | 50 | return response.status(result.status).send({ error: true }); |
| 51 | } | 51 | } |
| 52 | 52 | ||
| @@ -11,14 +11,14 @@ router.post('/list', jsonParser, async (req, res) => { | |||
| 11 | const key = readSecret(req.user.directories, SECRET_KEYS.AZURE_TTS); | 11 | const key = readSecret(req.user.directories, SECRET_KEYS.AZURE_TTS); |
| 12 | 12 | ||
| 13 | if (!key) { | 13 | if (!key) { |
| 14 | console.error('Azure TTS API Key not set'); | 14 | console.warn('Azure TTS API Key not set'); |
| 15 | return res.sendStatus(403); | 15 | return res.sendStatus(403); |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | const region = req.body.region; | 18 | const region = req.body.region; |
| 19 | 19 | ||
| 20 | if (!region) { | 20 | if (!region) { |
| 21 | console.error('Azure TTS region not set'); | 21 | console.warn('Azure TTS region not set'); |
| 22 | return res.sendStatus(400); | 22 | return res.sendStatus(400); |
| 23 | } | 23 | } |
| 24 | 24 | ||
| @@ -32,7 +32,7 @@ router.post('/list', jsonParser, async (req, res) => { | |||
| 32 | }); | 32 | }); |
| 33 | 33 | ||
| 34 | if (!response.ok) { | 34 | if (!response.ok) { |
| 35 | console.error('Azure Request failed', response.status, response.statusText); | 35 | console.warn('Azure Request failed', response.status, response.statusText); |
| 36 | return res.sendStatus(500); | 36 | return res.sendStatus(500); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| @@ -49,13 +49,13 @@ router.post('/generate', jsonParser, async (req, res) => { | |||
| 49 | const key = readSecret(req.user.directories, SECRET_KEYS.AZURE_TTS); | 49 | const key = readSecret(req.user.directories, SECRET_KEYS.AZURE_TTS); |
| 50 | 50 | ||
| 51 | if (!key) { | 51 | if (!key) { |
| 52 | console.error('Azure TTS API Key not set'); | 52 | console.warn('Azure TTS API Key not set'); |
| 53 | return res.sendStatus(403); | 53 | return res.sendStatus(403); |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | const { text, voice, region } = req.body; | 56 | const { text, voice, region } = req.body; |
| 57 | if (!text || !voice || !region) { | 57 | if (!text || !voice || !region) { |
| 58 | console.error('Missing required parameters'); | 58 | console.warn('Missing required parameters'); |
| 59 | return res.sendStatus(400); | 59 | return res.sendStatus(400); |
| 60 | } | 60 | } |
| 61 | 61 | ||
| @@ -75,7 +75,7 @@ router.post('/generate', jsonParser, async (req, res) => { | |||
| 75 | }); | 75 | }); |
| 76 | 76 | ||
| 77 | if (!response.ok) { | 77 | if (!response.ok) { |
| 78 | console.error('Azure Request failed', response.status, response.statusText); | 78 | console.warn('Azure Request failed', response.status, response.statusText); |
| 79 | return res.sendStatus(500); | 79 | return res.sendStatus(500); |
| 80 | } | 80 | } |
| 81 | 81 | ||
| @@ -114,7 +114,7 @@ async function sendClaudeRequest(request, response) { | |||
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | if (!apiKey) { | 116 | if (!apiKey) { |
| 117 | console.log(color.red(`Claude API key is missing.\n${divider}`)); | 117 | console.warn(color.red(`Claude API key is missing.\n${divider}`)); |
| 118 | return response.status(400).send({ error: true }); | 118 | return response.status(400).send({ error: true }); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| @@ -230,7 +230,7 @@ async function sendScaleRequest(request, response) { | |||
| 230 | const apiKey = readSecret(request.user.directories, SECRET_KEYS.SCALE); | 230 | const apiKey = readSecret(request.user.directories, SECRET_KEYS.SCALE); |
| 231 | 231 | ||
| 232 | if (!apiKey) { | 232 | if (!apiKey) { |
| 233 | console.log('Scale API key is missing.'); | 233 | console.warn('Scale API key is missing.'); |
| 234 | return response.status(400).send({ error: true }); | 234 | return response.status(400).send({ error: true }); |
| 235 | } | 235 | } |
| 236 | 236 | ||
| @@ -254,7 +254,7 @@ async function sendScaleRequest(request, response) { | |||
| 254 | }); | 254 | }); |
| 255 | 255 | ||
| 256 | if (!generateResponse.ok) { | 256 | if (!generateResponse.ok) { |
| 257 | console.error(`Scale API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); | 257 | console.warn(`Scale API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); |
| 258 | return response.status(500).send({ error: true }); | 258 | return response.status(500).send({ error: true }); |
| 259 | } | 259 | } |
| 260 | 260 | ||
| @@ -282,7 +282,7 @@ async function sendMakerSuiteRequest(request, response) { | |||
| 282 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.MAKERSUITE); | 282 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.MAKERSUITE); |
| 283 | 283 | ||
| 284 | if (!request.body.reverse_proxy && !apiKey) { | 284 | if (!request.body.reverse_proxy && !apiKey) { |
| 285 | console.error('Google AI Studio API key is missing.'); | 285 | console.warn('Google AI Studio API key is missing.'); |
| 286 | return response.status(400).send({ error: true }); | 286 | return response.status(400).send({ error: true }); |
| 287 | } | 287 | } |
| 288 | 288 | ||
| @@ -373,7 +373,7 @@ async function sendMakerSuiteRequest(request, response) { | |||
| 373 | } | 373 | } |
| 374 | } else { | 374 | } else { |
| 375 | if (!generateResponse.ok) { | 375 | if (!generateResponse.ok) { |
| 376 | console.error(`Google AI Studio API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); | 376 | console.warn(`Google AI Studio API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); |
| 377 | return response.status(generateResponse.status).send({ error: true }); | 377 | return response.status(generateResponse.status).send({ error: true }); |
| 378 | } | 378 | } |
| 379 | 379 | ||
| @@ -391,12 +391,12 @@ async function sendMakerSuiteRequest(request, response) { | |||
| 391 | } | 391 | } |
| 392 | 392 | ||
| 393 | const responseContent = candidates[0].content ?? candidates[0].output; | 393 | const responseContent = candidates[0].content ?? candidates[0].output; |
| 394 | console.error('Google AI Studio response:', responseContent); | 394 | console.warn('Google AI Studio response:', responseContent); |
| 395 | 395 | ||
| 396 | const responseText = typeof responseContent === 'string' ? responseContent : responseContent?.parts?.filter(part => !part.thought)?.map(part => part.text)?.join('\n\n'); | 396 | const responseText = typeof responseContent === 'string' ? responseContent : responseContent?.parts?.filter(part => !part.thought)?.map(part => part.text)?.join('\n\n'); |
| 397 | if (!responseText) { | 397 | if (!responseText) { |
| 398 | let message = 'Google AI Studio Candidate text empty'; | 398 | let message = 'Google AI Studio Candidate text empty'; |
| 399 | console.error(message, generateResponseJson); | 399 | console.warn(message, generateResponseJson); |
| 400 | return response.send({ error: { message } }); | 400 | return response.send({ error: { message } }); |
| 401 | } | 401 | } |
| 402 | 402 | ||
| @@ -456,7 +456,7 @@ async function sendAI21Request(request, response) { | |||
| 456 | } else { | 456 | } else { |
| 457 | if (!generateResponse.ok) { | 457 | if (!generateResponse.ok) { |
| 458 | const errorText = await generateResponse.text(); | 458 | const errorText = await generateResponse.text(); |
| 459 | console.error(`AI21 API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); | 459 | console.warn(`AI21 API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); |
| 460 | const errorJson = tryParse(errorText) ?? { error: true }; | 460 | const errorJson = tryParse(errorText) ?? { error: true }; |
| 461 | return response.status(500).send(errorJson); | 461 | return response.status(500).send(errorJson); |
| 462 | } | 462 | } |
| @@ -484,7 +484,7 @@ async function sendMistralAIRequest(request, response) { | |||
| 484 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.MISTRALAI); | 484 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.MISTRALAI); |
| 485 | 485 | ||
| 486 | if (!apiKey) { | 486 | if (!apiKey) { |
| 487 | console.error('MistralAI API key is missing.'); | 487 | console.warn('MistralAI API key is missing.'); |
| 488 | return response.status(400).send({ error: true }); | 488 | return response.status(400).send({ error: true }); |
| 489 | } | 489 | } |
| 490 | 490 | ||
| @@ -533,7 +533,7 @@ async function sendMistralAIRequest(request, response) { | |||
| 533 | } else { | 533 | } else { |
| 534 | if (!generateResponse.ok) { | 534 | if (!generateResponse.ok) { |
| 535 | const errorText = await generateResponse.text(); | 535 | const errorText = await generateResponse.text(); |
| 536 | console.error(`MistralAI API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); | 536 | console.warn(`MistralAI API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); |
| 537 | const errorJson = tryParse(errorText) ?? { error: true }; | 537 | const errorJson = tryParse(errorText) ?? { error: true }; |
| 538 | return response.status(500).send(errorJson); | 538 | return response.status(500).send(errorJson); |
| 539 | } | 539 | } |
| @@ -565,7 +565,7 @@ async function sendCohereRequest(request, response) { | |||
| 565 | }); | 565 | }); |
| 566 | 566 | ||
| 567 | if (!apiKey) { | 567 | if (!apiKey) { |
| 568 | console.error('Cohere API key is missing.'); | 568 | console.warn('Cohere API key is missing.'); |
| 569 | return response.status(400).send({ error: true }); | 569 | return response.status(400).send({ error: true }); |
| 570 | } | 570 | } |
| 571 | 571 | ||
| @@ -626,7 +626,7 @@ async function sendCohereRequest(request, response) { | |||
| 626 | const generateResponse = await fetch(apiUrl, config); | 626 | const generateResponse = await fetch(apiUrl, config); |
| 627 | if (!generateResponse.ok) { | 627 | if (!generateResponse.ok) { |
| 628 | const errorText = await generateResponse.text(); | 628 | const errorText = await generateResponse.text(); |
| 629 | console.error(`Cohere API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); | 629 | console.warn(`Cohere API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); |
| 630 | const errorJson = tryParse(errorText) ?? { error: true }; | 630 | const errorJson = tryParse(errorText) ?? { error: true }; |
| 631 | return response.status(500).send(errorJson); | 631 | return response.status(500).send(errorJson); |
| 632 | } | 632 | } |
| @@ -654,7 +654,7 @@ async function sendDeepSeekRequest(request, response) { | |||
| 654 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.DEEPSEEK); | 654 | const apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.DEEPSEEK); |
| 655 | 655 | ||
| 656 | if (!apiKey && !request.body.reverse_proxy) { | 656 | if (!apiKey && !request.body.reverse_proxy) { |
| 657 | console.log('DeepSeek API key is missing.'); | 657 | console.warn('DeepSeek API key is missing.'); |
| 658 | return response.status(400).send({ error: true }); | 658 | return response.status(400).send({ error: true }); |
| 659 | } | 659 | } |
| 660 | 660 | ||
| @@ -775,12 +775,12 @@ router.post('/status', jsonParser, async function (request, response_getstatus_o | |||
| 775 | api_key_openai = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.DEEPSEEK); | 775 | api_key_openai = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.DEEPSEEK); |
| 776 | headers = {}; | 776 | headers = {}; |
| 777 | } else { | 777 | } else { |
| 778 | console.error('This chat completion source is not supported yet.'); | 778 | console.warn('This chat completion source is not supported yet.'); |
| 779 | return response_getstatus_openai.status(400).send({ error: true }); | 779 | return response_getstatus_openai.status(400).send({ error: true }); |
| 780 | } | 780 | } |
| 781 | 781 | ||
| 782 | if (!api_key_openai && !request.body.reverse_proxy && request.body.chat_completion_source !== CHAT_COMPLETION_SOURCES.CUSTOM) { | 782 | if (!api_key_openai && !request.body.reverse_proxy && request.body.chat_completion_source !== CHAT_COMPLETION_SOURCES.CUSTOM) { |
| 783 | console.error('Chat Completion API key is missing.'); | 783 | console.warn('Chat Completion API key is missing.'); |
| 784 | return response_getstatus_openai.status(400).send({ error: true }); | 784 | return response_getstatus_openai.status(400).send({ error: true }); |
| 785 | } | 785 | } |
| 786 | 786 | ||
| @@ -1059,12 +1059,12 @@ router.post('/generate', jsonParser, function (request, response) { | |||
| 1059 | headers = {}; | 1059 | headers = {}; |
| 1060 | bodyParams = {}; | 1060 | bodyParams = {}; |
| 1061 | } else { | 1061 | } else { |
| 1062 | console.error('This chat completion source is not supported yet.'); | 1062 | console.warn('This chat completion source is not supported yet.'); |
| 1063 | return response.status(400).send({ error: true }); | 1063 | return response.status(400).send({ error: true }); |
| 1064 | } | 1064 | } |
| 1065 | 1065 | ||
| 1066 | if (!apiKey && !request.body.reverse_proxy && request.body.chat_completion_source !== CHAT_COMPLETION_SOURCES.CUSTOM) { | 1066 | if (!apiKey && !request.body.reverse_proxy && request.body.chat_completion_source !== CHAT_COMPLETION_SOURCES.CUSTOM) { |
| 1067 | console.error('OpenAI API key is missing.'); | 1067 | console.warn('OpenAI API key is missing.'); |
| 1068 | return response.status(400).send({ error: true }); | 1068 | return response.status(400).send({ error: true }); |
| 1069 | } | 1069 | } |
| 1070 | 1070 | ||
| @@ -105,7 +105,7 @@ router.post('/generate', jsonParser, async function (request, response_generate) | |||
| 105 | } else { | 105 | } else { |
| 106 | if (!response.ok) { | 106 | if (!response.ok) { |
| 107 | const errorText = await response.text(); | 107 | const errorText = await response.text(); |
| 108 | console.error(`Kobold returned error: ${response.status} ${response.statusText} ${errorText}`); | 108 | console.warn(`Kobold returned error: ${response.status} ${response.statusText} ${errorText}`); |
| 109 | 109 | ||
| 110 | try { | 110 | try { |
| 111 | const errorJson = JSON.parse(errorText); | 111 | const errorJson = JSON.parse(errorText); |
| @@ -13,7 +13,7 @@ router.post('/', jsonParser, async (req, res) => { | |||
| 13 | const rawImage = await getRawImage(image); | 13 | const rawImage = await getRawImage(image); |
| 14 | 14 | ||
| 15 | if (!rawImage) { | 15 | if (!rawImage) { |
| 16 | console.error('Failed to parse captioned image'); | 16 | console.warn('Failed to parse captioned image'); |
| 17 | return res.sendStatus(400); | 17 | return res.sendStatus(400); |
| 18 | } | 18 | } |
| 19 | 19 | ||
| @@ -812,13 +812,13 @@ router.post('/rename', jsonParser, validateAvatarUrlMiddleware, async function ( | |||
| 812 | 812 | ||
| 813 | router.post('/edit', urlencodedParser, validateAvatarUrlMiddleware, async function (request, response) { | 813 | router.post('/edit', urlencodedParser, validateAvatarUrlMiddleware, async function (request, response) { |
| 814 | if (!request.body) { | 814 | if (!request.body) { |
| 815 | console.error('Error: no response body detected'); | 815 | console.warn('Error: no response body detected'); |
| 816 | response.status(400).send('Error: no response body detected'); | 816 | response.status(400).send('Error: no response body detected'); |
| 817 | return; | 817 | return; |
| 818 | } | 818 | } |
| 819 | 819 | ||
| 820 | if (request.body.ch_name === '' || request.body.ch_name === undefined || request.body.ch_name === '.') { | 820 | if (request.body.ch_name === '' || request.body.ch_name === undefined || request.body.ch_name === '.') { |
| 821 | console.error('Error: invalid name.'); | 821 | console.warn('Error: invalid name.'); |
| 822 | response.status(400).send('Error: invalid name.'); | 822 | response.status(400).send('Error: invalid name.'); |
| 823 | return; | 823 | return; |
| 824 | } | 824 | } |
| @@ -862,12 +862,12 @@ router.post('/edit', urlencodedParser, validateAvatarUrlMiddleware, async functi | |||
| 862 | router.post('/edit-attribute', jsonParser, validateAvatarUrlMiddleware, async function (request, response) { | 862 | router.post('/edit-attribute', jsonParser, validateAvatarUrlMiddleware, async function (request, response) { |
| 863 | console.debug(request.body); | 863 | console.debug(request.body); |
| 864 | if (!request.body) { | 864 | if (!request.body) { |
| 865 | console.error('Error: no response body detected'); | 865 | console.warn('Error: no response body detected'); |
| 866 | return response.status(400).send('Error: no response body detected'); | 866 | return response.status(400).send('Error: no response body detected'); |
| 867 | } | 867 | } |
| 868 | 868 | ||
| 869 | if (request.body.ch_name === '' || request.body.ch_name === undefined || request.body.ch_name === '.') { | 869 | if (request.body.ch_name === '' || request.body.ch_name === undefined || request.body.ch_name === '.') { |
| 870 | console.error('Error: invalid name.'); | 870 | console.warn('Error: invalid name.'); |
| 871 | return response.status(400).send('Error: invalid name.'); | 871 | return response.status(400).send('Error: invalid name.'); |
| 872 | } | 872 | } |
| 873 | 873 | ||
| @@ -879,7 +879,7 @@ router.post('/edit-attribute', jsonParser, validateAvatarUrlMiddleware, async fu | |||
| 879 | const char = JSON.parse(charJSON); | 879 | const char = JSON.parse(charJSON); |
| 880 | //check if the field exists | 880 | //check if the field exists |
| 881 | if (char[request.body.field] === undefined && char.data[request.body.field] === undefined) { | 881 | if (char[request.body.field] === undefined && char.data[request.body.field] === undefined) { |
| 882 | console.error('Error: invalid field.'); | 882 | console.warn('Error: invalid field.'); |
| 883 | response.status(400).send('Error: invalid field.'); | 883 | response.status(400).send('Error: invalid field.'); |
| 884 | return; | 884 | return; |
| 885 | } | 885 | } |
| @@ -928,7 +928,7 @@ router.post('/merge-attributes', jsonParser, getFileNameValidationFunction('avat | |||
| 928 | await writeCharacterData(avatarPath, JSON.stringify(character), targetImg, request); | 928 | await writeCharacterData(avatarPath, JSON.stringify(character), targetImg, request); |
| 929 | response.sendStatus(200); | 929 | response.sendStatus(200); |
| 930 | } else { | 930 | } else { |
| 931 | console.error(validator.lastValidationError); | 931 | console.warn(validator.lastValidationError); |
| 932 | response.status(400).send({ message: `Validation failed for ${character.name}`, error: validator.lastValidationError }); | 932 | response.status(400).send({ message: `Validation failed for ${character.name}`, error: validator.lastValidationError }); |
| 933 | } | 933 | } |
| 934 | } catch (exception) { | 934 | } catch (exception) { |
| @@ -1152,7 +1152,7 @@ router.post('/import', urlencodedParser, async function (request, response) { | |||
| 1152 | const fileName = await importFunction(uploadPath, { request, response }, preservedFileName); | 1152 | const fileName = await importFunction(uploadPath, { request, response }, preservedFileName); |
| 1153 | 1153 | ||
| 1154 | if (!fileName) { | 1154 | if (!fileName) { |
| 1155 | console.error('Failed to import character'); | 1155 | console.warn('Failed to import character'); |
| 1156 | return response.sendStatus(400); | 1156 | return response.sendStatus(400); |
| 1157 | } | 1157 | } |
| 1158 | 1158 | ||
| @@ -1170,7 +1170,7 @@ router.post('/import', urlencodedParser, async function (request, response) { | |||
| 1170 | router.post('/duplicate', jsonParser, validateAvatarUrlMiddleware, async function (request, response) { | 1170 | router.post('/duplicate', jsonParser, validateAvatarUrlMiddleware, async function (request, response) { |
| 1171 | try { | 1171 | try { |
| 1172 | if (!request.body.avatar_url) { | 1172 | if (!request.body.avatar_url) { |
| 1173 | console.error('avatar URL not found in request body'); | 1173 | console.warn('avatar URL not found in request body'); |
| 1174 | console.debug(request.body); | 1174 | console.debug(request.body); |
| 1175 | return response.sendStatus(400); | 1175 | return response.sendStatus(400); |
| 1176 | } | 1176 | } |
| @@ -360,7 +360,7 @@ router.post('/generate-image', jsonParser, async (request, response) => { | |||
| 360 | { token: api_key_horde }); | 360 | { token: api_key_horde }); |
| 361 | 361 | ||
| 362 | if (!generation.id) { | 362 | if (!generation.id) { |
| 363 | console.error('Image generation request is not satisfyable:', generation.message || 'unknown error'); | 363 | console.warn('Image generation request is not satisfyable:', generation.message || 'unknown error'); |
| 364 | return response.sendStatus(400); | 364 | return response.sendStatus(400); |
| 365 | } | 365 | } |
| 366 | 366 | ||
| @@ -120,7 +120,7 @@ router.post('/status', jsonParser, async function (req, res) { | |||
| 120 | const api_key_novel = readSecret(req.user.directories, SECRET_KEYS.NOVEL); | 120 | const api_key_novel = readSecret(req.user.directories, SECRET_KEYS.NOVEL); |
| 121 | 121 | ||
| 122 | if (!api_key_novel) { | 122 | if (!api_key_novel) { |
| 123 | console.error('NovelAI Access Token is missing.'); | 123 | console.warn('NovelAI Access Token is missing.'); |
| 124 | return res.sendStatus(400); | 124 | return res.sendStatus(400); |
| 125 | } | 125 | } |
| 126 | 126 | ||
| @@ -141,7 +141,7 @@ router.post('/status', jsonParser, async function (req, res) { | |||
| 141 | return res.send({ error: true }); | 141 | return res.send({ error: true }); |
| 142 | } | 142 | } |
| 143 | else { | 143 | else { |
| 144 | console.error('NovelAI returned an error:', response.statusText); | 144 | console.warn('NovelAI returned an error:', response.statusText); |
| 145 | return res.send({ error: true }); | 145 | return res.send({ error: true }); |
| 146 | } | 146 | } |
| 147 | } catch (error) { | 147 | } catch (error) { |
| @@ -156,7 +156,7 @@ router.post('/generate', jsonParser, async function (req, res) { | |||
| 156 | const api_key_novel = readSecret(req.user.directories, SECRET_KEYS.NOVEL); | 156 | const api_key_novel = readSecret(req.user.directories, SECRET_KEYS.NOVEL); |
| 157 | 157 | ||
| 158 | if (!api_key_novel) { | 158 | if (!api_key_novel) { |
| 159 | console.error('NovelAI Access Token is missing.'); | 159 | console.warn('NovelAI Access Token is missing.'); |
| 160 | return res.sendStatus(400); | 160 | return res.sendStatus(400); |
| 161 | } | 161 | } |
| 162 | 162 | ||
| @@ -261,7 +261,7 @@ router.post('/generate', jsonParser, async function (req, res) { | |||
| 261 | if (!response.ok) { | 261 | if (!response.ok) { |
| 262 | const text = await response.text(); | 262 | const text = await response.text(); |
| 263 | let message = text; | 263 | let message = text; |
| 264 | console.error(`Novel API returned error: ${response.status} ${response.statusText} ${text}`); | 264 | console.warn(`Novel API returned error: ${response.status} ${response.statusText} ${text}`); |
| 265 | 265 | ||
| 266 | try { | 266 | try { |
| 267 | const data = JSON.parse(text); | 267 | const data = JSON.parse(text); |
| @@ -292,7 +292,7 @@ router.post('/generate-image', jsonParser, async (request, response) => { | |||
| 292 | const key = readSecret(request.user.directories, SECRET_KEYS.NOVEL); | 292 | const key = readSecret(request.user.directories, SECRET_KEYS.NOVEL); |
| 293 | 293 | ||
| 294 | if (!key) { | 294 | if (!key) { |
| 295 | console.error('NovelAI Access Token is missing.'); | 295 | console.warn('NovelAI Access Token is missing.'); |
| 296 | return response.sendStatus(400); | 296 | return response.sendStatus(400); |
| 297 | } | 297 | } |
| 298 | 298 | ||
| @@ -358,7 +358,7 @@ router.post('/generate-image', jsonParser, async (request, response) => { | |||
| 358 | 358 | ||
| 359 | if (!generateResult.ok) { | 359 | if (!generateResult.ok) { |
| 360 | const text = await generateResult.text(); | 360 | const text = await generateResult.text(); |
| 361 | console.error('NovelAI returned an error.', generateResult.statusText, text); | 361 | console.warn('NovelAI returned an error.', generateResult.statusText, text); |
| 362 | return response.sendStatus(500); | 362 | return response.sendStatus(500); |
| 363 | } | 363 | } |
| 364 | 364 | ||
| @@ -63,7 +63,7 @@ router.post('/caption-image', jsonParser, async (request, response) => { | |||
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | if (!key && !request.body.reverse_proxy && ['custom', 'ooba', 'koboldcpp', 'vllm'].includes(request.body.api) === false) { | 65 | if (!key && !request.body.reverse_proxy && ['custom', 'ooba', 'koboldcpp', 'vllm'].includes(request.body.api) === false) { |
| 66 | console.error('No key found for API', request.body.api); | 66 | console.warn('No key found for API', request.body.api); |
| 67 | return response.sendStatus(400); | 67 | return response.sendStatus(400); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| @@ -93,7 +93,7 @@ router.post('/caption-image', jsonParser, async (request, response) => { | |||
| 93 | excludeKeysByYaml(body, request.body.custom_exclude_body); | 93 | excludeKeysByYaml(body, request.body.custom_exclude_body); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | console.error('Multimodal captioning request', body); | 96 | console.debug('Multimodal captioning request', body); |
| 97 | 97 | ||
| 98 | let apiUrl = ''; | 98 | let apiUrl = ''; |
| 99 | 99 | ||
| @@ -158,7 +158,7 @@ router.post('/caption-image', jsonParser, async (request, response) => { | |||
| 158 | 158 | ||
| 159 | if (!result.ok) { | 159 | if (!result.ok) { |
| 160 | const text = await result.text(); | 160 | const text = await result.text(); |
| 161 | console.error('Multimodal captioning request failed', result.statusText, text); | 161 | console.warn('Multimodal captioning request failed', result.statusText, text); |
| 162 | return response.status(500).send(text); | 162 | return response.status(500).send(text); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| @@ -184,12 +184,12 @@ router.post('/transcribe-audio', urlencodedParser, async (request, response) => | |||
| 184 | const key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); | 184 | const key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); |
| 185 | 185 | ||
| 186 | if (!key) { | 186 | if (!key) { |
| 187 | console.error('No OpenAI key found'); | 187 | console.warn('No OpenAI key found'); |
| 188 | return response.sendStatus(400); | 188 | return response.sendStatus(400); |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | if (!request.file) { | 191 | if (!request.file) { |
| 192 | console.error('No audio file found'); | 192 | console.warn('No audio file found'); |
| 193 | return response.sendStatus(400); | 193 | return response.sendStatus(400); |
| 194 | } | 194 | } |
| 195 | 195 | ||
| @@ -213,7 +213,7 @@ router.post('/transcribe-audio', urlencodedParser, async (request, response) => | |||
| 213 | 213 | ||
| 214 | if (!result.ok) { | 214 | if (!result.ok) { |
| 215 | const text = await result.text(); | 215 | const text = await result.text(); |
| 216 | console.error('OpenAI request failed', result.statusText, text); | 216 | console.warn('OpenAI request failed', result.statusText, text); |
| 217 | return response.status(500).send(text); | 217 | return response.status(500).send(text); |
| 218 | } | 218 | } |
| 219 | 219 | ||
| @@ -232,7 +232,7 @@ router.post('/generate-voice', jsonParser, async (request, response) => { | |||
| 232 | const key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); | 232 | const key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); |
| 233 | 233 | ||
| 234 | if (!key) { | 234 | if (!key) { |
| 235 | console.error('No OpenAI key found'); | 235 | console.warn('No OpenAI key found'); |
| 236 | return response.sendStatus(400); | 236 | return response.sendStatus(400); |
| 237 | } | 237 | } |
| 238 | 238 | ||
| @@ -253,7 +253,7 @@ router.post('/generate-voice', jsonParser, async (request, response) => { | |||
| 253 | 253 | ||
| 254 | if (!result.ok) { | 254 | if (!result.ok) { |
| 255 | const text = await result.text(); | 255 | const text = await result.text(); |
| 256 | console.error('OpenAI request failed', result.statusText, text); | 256 | console.warn('OpenAI request failed', result.statusText, text); |
| 257 | return response.status(500).send(text); | 257 | return response.status(500).send(text); |
| 258 | } | 258 | } |
| 259 | 259 | ||
| @@ -271,7 +271,7 @@ router.post('/generate-image', jsonParser, async (request, response) => { | |||
| 271 | const key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); | 271 | const key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); |
| 272 | 272 | ||
| 273 | if (!key) { | 273 | if (!key) { |
| 274 | console.error('No OpenAI key found'); | 274 | console.warn('No OpenAI key found'); |
| 275 | return response.sendStatus(400); | 275 | return response.sendStatus(400); |
| 276 | } | 276 | } |
| 277 | 277 | ||
| @@ -288,7 +288,7 @@ router.post('/generate-image', jsonParser, async (request, response) => { | |||
| 288 | 288 | ||
| 289 | if (!result.ok) { | 289 | if (!result.ok) { |
| 290 | const text = await result.text(); | 290 | const text = await result.text(); |
| 291 | console.error('OpenAI request failed', result.statusText, text); | 291 | console.warn('OpenAI request failed', result.statusText, text); |
| 292 | return response.status(500).send(text); | 292 | return response.status(500).send(text); |
| 293 | } | 293 | } |
| 294 | 294 | ||
| @@ -308,7 +308,7 @@ custom.post('/generate-voice', jsonParser, async (request, response) => { | |||
| 308 | const { input, provider_endpoint, response_format, voice, speed, model } = request.body; | 308 | const { input, provider_endpoint, response_format, voice, speed, model } = request.body; |
| 309 | 309 | ||
| 310 | if (!provider_endpoint) { | 310 | if (!provider_endpoint) { |
| 311 | console.error('No OpenAI-compatible TTS provider endpoint provided'); | 311 | console.warn('No OpenAI-compatible TTS provider endpoint provided'); |
| 312 | return response.sendStatus(400); | 312 | return response.sendStatus(400); |
| 313 | } | 313 | } |
| 314 | 314 | ||
| @@ -329,7 +329,7 @@ custom.post('/generate-voice', jsonParser, async (request, response) => { | |||
| 329 | 329 | ||
| 330 | if (!result.ok) { | 330 | if (!result.ok) { |
| 331 | const text = await result.text(); | 331 | const text = await result.text(); |
| 332 | console.error('OpenAI request failed', result.statusText, text); | 332 | console.warn('OpenAI request failed', result.statusText, text); |
| 333 | return response.status(500).send(text); | 333 | return response.status(500).send(text); |
| 334 | } | 334 | } |
| 335 | 335 | ||
| @@ -604,7 +604,7 @@ together.post('/models', jsonParser, async (request, response) => { | |||
| 604 | const key = readSecret(request.user.directories, SECRET_KEYS.TOGETHERAI); | 604 | const key = readSecret(request.user.directories, SECRET_KEYS.TOGETHERAI); |
| 605 | 605 | ||
| 606 | if (!key) { | 606 | if (!key) { |
| 607 | console.error('TogetherAI key not found.'); | 607 | console.warn('TogetherAI key not found.'); |
| 608 | return response.sendStatus(400); | 608 | return response.sendStatus(400); |
| 609 | } | 609 | } |
| 610 | 610 | ||
| @@ -616,14 +616,14 @@ together.post('/models', jsonParser, async (request, response) => { | |||
| 616 | }); | 616 | }); |
| 617 | 617 | ||
| 618 | if (!modelsResponse.ok) { | 618 | if (!modelsResponse.ok) { |
| 619 | console.error('TogetherAI returned an error.'); | 619 | console.warn('TogetherAI returned an error.'); |
| 620 | return response.sendStatus(500); | 620 | return response.sendStatus(500); |
| 621 | } | 621 | } |
| 622 | 622 | ||
| 623 | const data = await modelsResponse.json(); | 623 | const data = await modelsResponse.json(); |
| 624 | 624 | ||
| 625 | if (!Array.isArray(data)) { | 625 | if (!Array.isArray(data)) { |
| 626 | console.error('TogetherAI returned invalid data.'); | 626 | console.warn('TogetherAI returned invalid data.'); |
| 627 | return response.sendStatus(500); | 627 | return response.sendStatus(500); |
| 628 | } | 628 | } |
| 629 | 629 | ||
| @@ -643,7 +643,7 @@ together.post('/generate', jsonParser, async (request, response) => { | |||
| 643 | const key = readSecret(request.user.directories, SECRET_KEYS.TOGETHERAI); | 643 | const key = readSecret(request.user.directories, SECRET_KEYS.TOGETHERAI); |
| 644 | 644 | ||
| 645 | if (!key) { | 645 | if (!key) { |
| 646 | console.error('TogetherAI key not found.'); | 646 | console.warn('TogetherAI key not found.'); |
| 647 | return response.sendStatus(400); | 647 | return response.sendStatus(400); |
| 648 | } | 648 | } |
| 649 | 649 | ||
| @@ -669,7 +669,7 @@ together.post('/generate', jsonParser, async (request, response) => { | |||
| 669 | }); | 669 | }); |
| 670 | 670 | ||
| 671 | if (!result.ok) { | 671 | if (!result.ok) { |
| 672 | console.error('TogetherAI returned an error.', { body: await result.text() }); | 672 | console.warn('TogetherAI returned an error.', { body: await result.text() }); |
| 673 | return response.sendStatus(500); | 673 | return response.sendStatus(500); |
| 674 | } | 674 | } |
| 675 | 675 | ||
| @@ -794,14 +794,14 @@ pollinations.post('/models', jsonParser, async (_request, response) => { | |||
| 794 | const result = await fetch(modelsUrl); | 794 | const result = await fetch(modelsUrl); |
| 795 | 795 | ||
| 796 | if (!result.ok) { | 796 | if (!result.ok) { |
| 797 | console.error('Pollinations returned an error.', result.status, result.statusText); | 797 | console.warn('Pollinations returned an error.', result.status, result.statusText); |
| 798 | throw new Error('Pollinations request failed.'); | 798 | throw new Error('Pollinations request failed.'); |
| 799 | } | 799 | } |
| 800 | 800 | ||
| 801 | const data = await result.json(); | 801 | const data = await result.json(); |
| 802 | 802 | ||
| 803 | if (!Array.isArray(data)) { | 803 | if (!Array.isArray(data)) { |
| 804 | console.error('Pollinations returned invalid data.'); | 804 | console.warn('Pollinations returned invalid data.'); |
| 805 | throw new Error('Pollinations request failed.'); | 805 | throw new Error('Pollinations request failed.'); |
| 806 | } | 806 | } |
| 807 | 807 | ||
| @@ -834,7 +834,7 @@ pollinations.post('/generate', jsonParser, async (request, response) => { | |||
| 834 | const result = await fetch(promptUrl); | 834 | const result = await fetch(promptUrl); |
| 835 | 835 | ||
| 836 | if (!result.ok) { | 836 | if (!result.ok) { |
| 837 | console.error('Pollinations returned an error.', result.status, result.statusText); | 837 | console.warn('Pollinations returned an error.', result.status, result.statusText); |
| 838 | throw new Error('Pollinations request failed.'); | 838 | throw new Error('Pollinations request failed.'); |
| 839 | } | 839 | } |
| 840 | 840 | ||
| @@ -855,7 +855,7 @@ stability.post('/generate', jsonParser, async (request, response) => { | |||
| 855 | const key = readSecret(request.user.directories, SECRET_KEYS.STABILITY); | 855 | const key = readSecret(request.user.directories, SECRET_KEYS.STABILITY); |
| 856 | 856 | ||
| 857 | if (!key) { | 857 | if (!key) { |
| 858 | console.error('Stability AI key not found.'); | 858 | console.warn('Stability AI key not found.'); |
| 859 | return response.sendStatus(400); | 859 | return response.sendStatus(400); |
| 860 | } | 860 | } |
| 861 | 861 | ||
| @@ -896,7 +896,7 @@ stability.post('/generate', jsonParser, async (request, response) => { | |||
| 896 | 896 | ||
| 897 | if (!result.ok) { | 897 | if (!result.ok) { |
| 898 | const text = await result.text(); | 898 | const text = await result.text(); |
| 899 | console.error('Stability AI returned an error.', result.status, result.statusText, text); | 899 | console.warn('Stability AI returned an error.', result.status, result.statusText, text); |
| 900 | return response.sendStatus(500); | 900 | return response.sendStatus(500); |
| 901 | } | 901 | } |
| 902 | 902 | ||
| @@ -915,7 +915,7 @@ blockentropy.post('/models', jsonParser, async (request, response) => { | |||
| 915 | const key = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); | 915 | const key = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); |
| 916 | 916 | ||
| 917 | if (!key) { | 917 | if (!key) { |
| 918 | console.error('Block Entropy key not found.'); | 918 | console.warn('Block Entropy key not found.'); |
| 919 | return response.sendStatus(400); | 919 | return response.sendStatus(400); |
| 920 | } | 920 | } |
| 921 | 921 | ||
| @@ -927,14 +927,14 @@ blockentropy.post('/models', jsonParser, async (request, response) => { | |||
| 927 | }); | 927 | }); |
| 928 | 928 | ||
| 929 | if (!modelsResponse.ok) { | 929 | if (!modelsResponse.ok) { |
| 930 | console.error('Block Entropy returned an error.'); | 930 | console.warn('Block Entropy returned an error.'); |
| 931 | return response.sendStatus(500); | 931 | return response.sendStatus(500); |
| 932 | } | 932 | } |
| 933 | 933 | ||
| 934 | const data = await modelsResponse.json(); | 934 | const data = await modelsResponse.json(); |
| 935 | 935 | ||
| 936 | if (!Array.isArray(data)) { | 936 | if (!Array.isArray(data)) { |
| 937 | console.error('Block Entropy returned invalid data.'); | 937 | console.warn('Block Entropy returned invalid data.'); |
| 938 | return response.sendStatus(500); | 938 | return response.sendStatus(500); |
| 939 | } | 939 | } |
| 940 | const models = data.map(x => ({ value: x.name, text: x.name })); | 940 | const models = data.map(x => ({ value: x.name, text: x.name })); |
| @@ -951,7 +951,7 @@ blockentropy.post('/generate', jsonParser, async (request, response) => { | |||
| 951 | const key = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); | 951 | const key = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); |
| 952 | 952 | ||
| 953 | if (!key) { | 953 | if (!key) { |
| 954 | console.error('Block Entropy key not found.'); | 954 | console.warn('Block Entropy key not found.'); |
| 955 | return response.sendStatus(400); | 955 | return response.sendStatus(400); |
| 956 | } | 956 | } |
| 957 | 957 | ||
| @@ -976,7 +976,7 @@ blockentropy.post('/generate', jsonParser, async (request, response) => { | |||
| 976 | }); | 976 | }); |
| 977 | 977 | ||
| 978 | if (!result.ok) { | 978 | if (!result.ok) { |
| 979 | console.error('Block Entropy returned an error.'); | 979 | console.warn('Block Entropy returned an error.'); |
| 980 | return response.sendStatus(500); | 980 | return response.sendStatus(500); |
| 981 | } | 981 | } |
| 982 | 982 | ||
| @@ -998,7 +998,7 @@ huggingface.post('/generate', jsonParser, async (request, response) => { | |||
| 998 | const key = readSecret(request.user.directories, SECRET_KEYS.HUGGINGFACE); | 998 | const key = readSecret(request.user.directories, SECRET_KEYS.HUGGINGFACE); |
| 999 | 999 | ||
| 1000 | if (!key) { | 1000 | if (!key) { |
| 1001 | console.error('Hugging Face key not found.'); | 1001 | console.warn('Hugging Face key not found.'); |
| 1002 | return response.sendStatus(400); | 1002 | return response.sendStatus(400); |
| 1003 | } | 1003 | } |
| 1004 | 1004 | ||
| @@ -1016,7 +1016,7 @@ huggingface.post('/generate', jsonParser, async (request, response) => { | |||
| 1016 | }); | 1016 | }); |
| 1017 | 1017 | ||
| 1018 | if (!result.ok) { | 1018 | if (!result.ok) { |
| 1019 | console.error('Hugging Face returned an error.'); | 1019 | console.warn('Hugging Face returned an error.'); |
| 1020 | return response.sendStatus(500); | 1020 | return response.sendStatus(500); |
| 1021 | } | 1021 | } |
| 1022 | 1022 | ||
| @@ -1037,7 +1037,7 @@ nanogpt.post('/models', jsonParser, async (request, response) => { | |||
| 1037 | const key = readSecret(request.user.directories, SECRET_KEYS.NANOGPT); | 1037 | const key = readSecret(request.user.directories, SECRET_KEYS.NANOGPT); |
| 1038 | 1038 | ||
| 1039 | if (!key) { | 1039 | if (!key) { |
| 1040 | console.error('NanoGPT key not found.'); | 1040 | console.warn('NanoGPT key not found.'); |
| 1041 | return response.sendStatus(400); | 1041 | return response.sendStatus(400); |
| 1042 | } | 1042 | } |
| 1043 | 1043 | ||
| @@ -1050,7 +1050,7 @@ nanogpt.post('/models', jsonParser, async (request, response) => { | |||
| 1050 | }); | 1050 | }); |
| 1051 | 1051 | ||
| 1052 | if (!modelsResponse.ok) { | 1052 | if (!modelsResponse.ok) { |
| 1053 | console.error('NanoGPT returned an error.'); | 1053 | console.warn('NanoGPT returned an error.'); |
| 1054 | return response.sendStatus(500); | 1054 | return response.sendStatus(500); |
| 1055 | } | 1055 | } |
| 1056 | 1056 | ||
| @@ -1059,7 +1059,7 @@ nanogpt.post('/models', jsonParser, async (request, response) => { | |||
| 1059 | const imageModels = data?.models?.image; | 1059 | const imageModels = data?.models?.image; |
| 1060 | 1060 | ||
| 1061 | if (!imageModels || typeof imageModels !== 'object') { | 1061 | if (!imageModels || typeof imageModels !== 'object') { |
| 1062 | console.error('NanoGPT returned invalid data.'); | 1062 | console.warn('NanoGPT returned invalid data.'); |
| 1063 | return response.sendStatus(500); | 1063 | return response.sendStatus(500); |
| 1064 | } | 1064 | } |
| 1065 | 1065 | ||
| @@ -1077,7 +1077,7 @@ nanogpt.post('/generate', jsonParser, async (request, response) => { | |||
| 1077 | const key = readSecret(request.user.directories, SECRET_KEYS.NANOGPT); | 1077 | const key = readSecret(request.user.directories, SECRET_KEYS.NANOGPT); |
| 1078 | 1078 | ||
| 1079 | if (!key) { | 1079 | if (!key) { |
| 1080 | console.error('NanoGPT key not found.'); | 1080 | console.warn('NanoGPT key not found.'); |
| 1081 | return response.sendStatus(400); | 1081 | return response.sendStatus(400); |
| 1082 | } | 1082 | } |
| 1083 | 1083 | ||
| @@ -1093,7 +1093,7 @@ nanogpt.post('/generate', jsonParser, async (request, response) => { | |||
| 1093 | }); | 1093 | }); |
| 1094 | 1094 | ||
| 1095 | if (!result.ok) { | 1095 | if (!result.ok) { |
| 1096 | console.error('NanoGPT returned an error.'); | 1096 | console.warn('NanoGPT returned an error.'); |
| 1097 | return response.sendStatus(500); | 1097 | return response.sendStatus(500); |
| 1098 | } | 1098 | } |
| 1099 | 1099 | ||
| @@ -1102,7 +1102,7 @@ nanogpt.post('/generate', jsonParser, async (request, response) => { | |||
| 1102 | 1102 | ||
| 1103 | const image = data?.data?.[0]?.b64_json; | 1103 | const image = data?.data?.[0]?.b64_json; |
| 1104 | if (!image) { | 1104 | if (!image) { |
| 1105 | console.error('NanoGPT returned invalid data.'); | 1105 | console.warn('NanoGPT returned invalid data.'); |
| 1106 | return response.sendStatus(500); | 1106 | return response.sendStatus(500); |
| 1107 | } | 1107 | } |
| 1108 | 1108 | ||
| @@ -1121,7 +1121,7 @@ bfl.post('/generate', jsonParser, async (request, response) => { | |||
| 1121 | const key = readSecret(request.user.directories, SECRET_KEYS.BFL); | 1121 | const key = readSecret(request.user.directories, SECRET_KEYS.BFL); |
| 1122 | 1122 | ||
| 1123 | if (!key) { | 1123 | if (!key) { |
| 1124 | console.error('BFL key not found.'); | 1124 | console.warn('BFL key not found.'); |
| 1125 | return response.sendStatus(400); | 1125 | return response.sendStatus(400); |
| 1126 | } | 1126 | } |
| 1127 | 1127 | ||
| @@ -1185,7 +1185,7 @@ bfl.post('/generate', jsonParser, async (request, response) => { | |||
| 1185 | }); | 1185 | }); |
| 1186 | 1186 | ||
| 1187 | if (!result.ok) { | 1187 | if (!result.ok) { |
| 1188 | console.error('BFL returned an error.'); | 1188 | console.warn('BFL returned an error.'); |
| 1189 | return response.sendStatus(500); | 1189 | return response.sendStatus(500); |
| 1190 | } | 1190 | } |
| 1191 | 1191 | ||
| @@ -1201,7 +1201,7 @@ bfl.post('/generate', jsonParser, async (request, response) => { | |||
| 1201 | 1201 | ||
| 1202 | if (!statusResult.ok) { | 1202 | if (!statusResult.ok) { |
| 1203 | const text = await statusResult.text(); | 1203 | const text = await statusResult.text(); |
| 1204 | console.error('BFL returned an error.', text); | 1204 | console.warn('BFL returned an error.', text); |
| 1205 | return response.sendStatus(500); | 1205 | return response.sendStatus(500); |
| 1206 | } | 1206 | } |
| 1207 | 1207 | ||
| @@ -988,7 +988,7 @@ router.post('/remote/kobold/count', jsonParser, async function (request, respons | |||
| 988 | const result = await fetch(url, args); | 988 | const result = await fetch(url, args); |
| 989 | 989 | ||
| 990 | if (!result.ok) { | 990 | if (!result.ok) { |
| 991 | console.error(`API returned error: ${result.status} ${result.statusText}`); | 991 | console.warn(`API returned error: ${result.status} ${result.statusText}`); |
| 992 | return response.send({ error: true }); | 992 | return response.send({ error: true }); |
| 993 | } | 993 | } |
| 994 | 994 | ||
| @@ -1052,7 +1052,7 @@ router.post('/remote/textgenerationwebui/encode', jsonParser, async function (re | |||
| 1052 | const result = await fetch(url, args); | 1052 | const result = await fetch(url, args); |
| 1053 | 1053 | ||
| 1054 | if (!result.ok) { | 1054 | if (!result.ok) { |
| 1055 | console.error(`API returned error: ${result.status} ${result.statusText}`); | 1055 | console.warn(`API returned error: ${result.status} ${result.statusText}`); |
| 1056 | return response.send({ error: true }); | 1056 | return response.send({ error: true }); |
| 1057 | } | 1057 | } |
| 1058 | 1058 | ||
| @@ -46,7 +46,7 @@ router.post('/libre', jsonParser, async (request, response) => { | |||
| 46 | const url = readSecret(request.user.directories, SECRET_KEYS.LIBRE_URL); | 46 | const url = readSecret(request.user.directories, SECRET_KEYS.LIBRE_URL); |
| 47 | 47 | ||
| 48 | if (!url) { | 48 | if (!url) { |
| 49 | console.error('LibreTranslate URL is not configured.'); | 49 | console.warn('LibreTranslate URL is not configured.'); |
| 50 | return response.sendStatus(400); | 50 | return response.sendStatus(400); |
| 51 | } | 51 | } |
| 52 | 52 | ||
| @@ -85,7 +85,7 @@ router.post('/libre', jsonParser, async (request, response) => { | |||
| 85 | 85 | ||
| 86 | if (!result.ok) { | 86 | if (!result.ok) { |
| 87 | const error = await result.text(); | 87 | const error = await result.text(); |
| 88 | console.error('LibreTranslate error: ', result.statusText, error); | 88 | console.warn('LibreTranslate error: ', result.statusText, error); |
| 89 | return response.sendStatus(500); | 89 | return response.sendStatus(500); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| @@ -116,7 +116,7 @@ router.post('/google', jsonParser, async (request, response) => { | |||
| 116 | const result = await fetch(requestUrl); | 116 | const result = await fetch(requestUrl); |
| 117 | 117 | ||
| 118 | if (!result.ok) { | 118 | if (!result.ok) { |
| 119 | console.error('Google Translate error: ', result.statusText); | 119 | console.warn('Google Translate error: ', result.statusText); |
| 120 | return response.sendStatus(500); | 120 | return response.sendStatus(500); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| @@ -173,7 +173,7 @@ router.post('/yandex', jsonParser, async (request, response) => { | |||
| 173 | 173 | ||
| 174 | if (!result.ok) { | 174 | if (!result.ok) { |
| 175 | const error = await result.text(); | 175 | const error = await result.text(); |
| 176 | console.error('Yandex error: ', result.statusText, error); | 176 | console.warn('Yandex error: ', result.statusText, error); |
| 177 | return response.sendStatus(500); | 177 | return response.sendStatus(500); |
| 178 | } | 178 | } |
| 179 | 179 | ||
| @@ -220,7 +220,7 @@ router.post('/lingva', jsonParser, async (request, response) => { | |||
| 220 | 220 | ||
| 221 | if (!result.ok) { | 221 | if (!result.ok) { |
| 222 | const error = await result.text(); | 222 | const error = await result.text(); |
| 223 | console.error('Lingva error: ', result.statusText, error); | 223 | console.warn('Lingva error: ', result.statusText, error); |
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | /** @type {any} */ | 226 | /** @type {any} */ |
| @@ -238,7 +238,7 @@ router.post('/deepl', jsonParser, async (request, response) => { | |||
| 238 | const key = readSecret(request.user.directories, SECRET_KEYS.DEEPL); | 238 | const key = readSecret(request.user.directories, SECRET_KEYS.DEEPL); |
| 239 | 239 | ||
| 240 | if (!key) { | 240 | if (!key) { |
| 241 | console.error('DeepL key is not configured.'); | 241 | console.warn('DeepL key is not configured.'); |
| 242 | return response.sendStatus(400); | 242 | return response.sendStatus(400); |
| 243 | } | 243 | } |
| 244 | 244 | ||
| @@ -280,7 +280,7 @@ router.post('/deepl', jsonParser, async (request, response) => { | |||
| 280 | 280 | ||
| 281 | if (!result.ok) { | 281 | if (!result.ok) { |
| 282 | const error = await result.text(); | 282 | const error = await result.text(); |
| 283 | console.error('DeepL error: ', result.statusText, error); | 283 | console.warn('DeepL error: ', result.statusText, error); |
| 284 | return response.sendStatus(500); | 284 | return response.sendStatus(500); |
| 285 | } | 285 | } |
| 286 | 286 | ||
| @@ -393,7 +393,7 @@ router.post('/deeplx', jsonParser, async (request, response) => { | |||
| 393 | 393 | ||
| 394 | if (!result.ok) { | 394 | if (!result.ok) { |
| 395 | const error = await result.text(); | 395 | const error = await result.text(); |
| 396 | console.error('DeepLX error: ', result.statusText, error); | 396 | console.warn('DeepLX error: ', result.statusText, error); |
| 397 | return response.sendStatus(500); | 397 | return response.sendStatus(500); |
| 398 | } | 398 | } |
| 399 | 399 | ||
| @@ -53,12 +53,12 @@ router.post('/get', requireAdminMiddleware, jsonParser, async (_request, respons | |||
| 53 | router.post('/disable', requireAdminMiddleware, jsonParser, async (request, response) => { | 53 | router.post('/disable', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 54 | try { | 54 | try { |
| 55 | if (!request.body.handle) { | 55 | if (!request.body.handle) { |
| 56 | console.error('Disable user failed: Missing required fields'); | 56 | console.warn('Disable user failed: Missing required fields'); |
| 57 | return response.status(400).json({ error: 'Missing required fields' }); | 57 | return response.status(400).json({ error: 'Missing required fields' }); |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | if (request.body.handle === request.user.profile.handle) { | 60 | if (request.body.handle === request.user.profile.handle) { |
| 61 | console.error('Disable user failed: Cannot disable yourself'); | 61 | console.warn('Disable user failed: Cannot disable yourself'); |
| 62 | return response.status(400).json({ error: 'Cannot disable yourself' }); | 62 | return response.status(400).json({ error: 'Cannot disable yourself' }); |
| 63 | } | 63 | } |
| 64 | 64 | ||
| @@ -82,7 +82,7 @@ router.post('/disable', requireAdminMiddleware, jsonParser, async (request, resp | |||
| 82 | router.post('/enable', requireAdminMiddleware, jsonParser, async (request, response) => { | 82 | router.post('/enable', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 83 | try { | 83 | try { |
| 84 | if (!request.body.handle) { | 84 | if (!request.body.handle) { |
| 85 | console.error('Enable user failed: Missing required fields'); | 85 | console.warn('Enable user failed: Missing required fields'); |
| 86 | return response.status(400).json({ error: 'Missing required fields' }); | 86 | return response.status(400).json({ error: 'Missing required fields' }); |
| 87 | } | 87 | } |
| 88 | 88 | ||
| @@ -106,7 +106,7 @@ router.post('/enable', requireAdminMiddleware, jsonParser, async (request, respo | |||
| 106 | router.post('/promote', requireAdminMiddleware, jsonParser, async (request, response) => { | 106 | router.post('/promote', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 107 | try { | 107 | try { |
| 108 | if (!request.body.handle) { | 108 | if (!request.body.handle) { |
| 109 | console.error('Promote user failed: Missing required fields'); | 109 | console.warn('Promote user failed: Missing required fields'); |
| 110 | return response.status(400).json({ error: 'Missing required fields' }); | 110 | return response.status(400).json({ error: 'Missing required fields' }); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| @@ -130,12 +130,12 @@ router.post('/promote', requireAdminMiddleware, jsonParser, async (request, resp | |||
| 130 | router.post('/demote', requireAdminMiddleware, jsonParser, async (request, response) => { | 130 | router.post('/demote', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 131 | try { | 131 | try { |
| 132 | if (!request.body.handle) { | 132 | if (!request.body.handle) { |
| 133 | console.error('Demote user failed: Missing required fields'); | 133 | console.warn('Demote user failed: Missing required fields'); |
| 134 | return response.status(400).json({ error: 'Missing required fields' }); | 134 | return response.status(400).json({ error: 'Missing required fields' }); |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | if (request.body.handle === request.user.profile.handle) { | 137 | if (request.body.handle === request.user.profile.handle) { |
| 138 | console.error('Demote user failed: Cannot demote yourself'); | 138 | console.warn('Demote user failed: Cannot demote yourself'); |
| 139 | return response.status(400).json({ error: 'Cannot demote yourself' }); | 139 | return response.status(400).json({ error: 'Cannot demote yourself' }); |
| 140 | } | 140 | } |
| 141 | 141 | ||
| @@ -159,7 +159,7 @@ router.post('/demote', requireAdminMiddleware, jsonParser, async (request, respo | |||
| 159 | router.post('/create', requireAdminMiddleware, jsonParser, async (request, response) => { | 159 | router.post('/create', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 160 | try { | 160 | try { |
| 161 | if (!request.body.handle || !request.body.name) { | 161 | if (!request.body.handle || !request.body.name) { |
| 162 | console.error('Create user failed: Missing required fields'); | 162 | console.warn('Create user failed: Missing required fields'); |
| 163 | return response.status(400).json({ error: 'Missing required fields' }); | 163 | return response.status(400).json({ error: 'Missing required fields' }); |
| 164 | } | 164 | } |
| 165 | 165 | ||
| @@ -167,12 +167,12 @@ router.post('/create', requireAdminMiddleware, jsonParser, async (request, respo | |||
| 167 | const handle = lodash.kebabCase(String(request.body.handle).toLowerCase().trim()); | 167 | const handle = lodash.kebabCase(String(request.body.handle).toLowerCase().trim()); |
| 168 | 168 | ||
| 169 | if (!handle) { | 169 | if (!handle) { |
| 170 | console.error('Create user failed: Invalid handle'); | 170 | console.warn('Create user failed: Invalid handle'); |
| 171 | return response.status(400).json({ error: 'Invalid handle' }); | 171 | return response.status(400).json({ error: 'Invalid handle' }); |
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | if (handles.some(x => x === handle)) { | 174 | if (handles.some(x => x === handle)) { |
| 175 | console.error('Create user failed: User with that handle already exists'); | 175 | console.warn('Create user failed: User with that handle already exists'); |
| 176 | return response.status(409).json({ error: 'User already exists' }); | 176 | return response.status(409).json({ error: 'User already exists' }); |
| 177 | } | 177 | } |
| 178 | 178 | ||
| @@ -206,17 +206,17 @@ router.post('/create', requireAdminMiddleware, jsonParser, async (request, respo | |||
| 206 | router.post('/delete', requireAdminMiddleware, jsonParser, async (request, response) => { | 206 | router.post('/delete', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 207 | try { | 207 | try { |
| 208 | if (!request.body.handle) { | 208 | if (!request.body.handle) { |
| 209 | console.error('Delete user failed: Missing required fields'); | 209 | console.warn('Delete user failed: Missing required fields'); |
| 210 | return response.status(400).json({ error: 'Missing required fields' }); | 210 | return response.status(400).json({ error: 'Missing required fields' }); |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | if (request.body.handle === request.user.profile.handle) { | 213 | if (request.body.handle === request.user.profile.handle) { |
| 214 | console.error('Delete user failed: Cannot delete yourself'); | 214 | console.warn('Delete user failed: Cannot delete yourself'); |
| 215 | return response.status(400).json({ error: 'Cannot delete yourself' }); | 215 | return response.status(400).json({ error: 'Cannot delete yourself' }); |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | if (request.body.handle === DEFAULT_USER.handle) { | 218 | if (request.body.handle === DEFAULT_USER.handle) { |
| 219 | console.error('Delete user failed: Cannot delete default user'); | 219 | console.warn('Delete user failed: Cannot delete default user'); |
| 220 | return response.status(400).json({ error: 'Sorry, but the default user cannot be deleted. It is required as a fallback.' }); | 220 | return response.status(400).json({ error: 'Sorry, but the default user cannot be deleted. It is required as a fallback.' }); |
| 221 | } | 221 | } |
| 222 | 222 | ||
| @@ -238,7 +238,7 @@ router.post('/delete', requireAdminMiddleware, jsonParser, async (request, respo | |||
| 238 | router.post('/slugify', requireAdminMiddleware, jsonParser, async (request, response) => { | 238 | router.post('/slugify', requireAdminMiddleware, jsonParser, async (request, response) => { |
| 239 | try { | 239 | try { |
| 240 | if (!request.body.text) { | 240 | if (!request.body.text) { |
| 241 | console.error('Slugify failed: Missing required fields'); | 241 | console.warn('Slugify failed: Missing required fields'); |
| 242 | return response.status(400).json({ error: 'Missing required fields' }); | 242 | return response.status(400).json({ error: 'Missing required fields' }); |
| 243 | } | 243 | } |
| 244 | 244 | ||
| @@ -58,7 +58,7 @@ router.get('/me', async (request, response) => { | |||
| 58 | router.post('/change-avatar', jsonParser, async (request, response) => { | 58 | router.post('/change-avatar', jsonParser, async (request, response) => { |
| 59 | try { | 59 | try { |
| 60 | if (!request.body.handle) { | 60 | if (!request.body.handle) { |
| 61 | console.error('Change avatar failed: Missing required fields'); | 61 | console.warn('Change avatar failed: Missing required fields'); |
| 62 | return response.status(400).json({ error: 'Missing required fields' }); | 62 | return response.status(400).json({ error: 'Missing required fields' }); |
| 63 | } | 63 | } |
| 64 | 64 | ||
| @@ -69,7 +69,7 @@ router.post('/change-avatar', jsonParser, async (request, response) => { | |||
| 69 | 69 | ||
| 70 | // Avatar is not a data URL or not an empty string | 70 | // Avatar is not a data URL or not an empty string |
| 71 | if (!request.body.avatar.startsWith('data:image/') && request.body.avatar !== '') { | 71 | if (!request.body.avatar.startsWith('data:image/') && request.body.avatar !== '') { |
| 72 | console.error('Change avatar failed: Invalid data URL'); | 72 | console.warn('Change avatar failed: Invalid data URL'); |
| 73 | return response.status(400).json({ error: 'Invalid data URL' }); | 73 | return response.status(400).json({ error: 'Invalid data URL' }); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| @@ -93,7 +93,7 @@ router.post('/change-avatar', jsonParser, async (request, response) => { | |||
| 93 | router.post('/change-password', jsonParser, async (request, response) => { | 93 | router.post('/change-password', jsonParser, async (request, response) => { |
| 94 | try { | 94 | try { |
| 95 | if (!request.body.handle) { | 95 | if (!request.body.handle) { |
| 96 | console.error('Change password failed: Missing required fields'); | 96 | console.warn('Change password failed: Missing required fields'); |
| 97 | return response.status(400).json({ error: 'Missing required fields' }); | 97 | return response.status(400).json({ error: 'Missing required fields' }); |
| 98 | } | 98 | } |
| 99 | 99 | ||
| @@ -142,7 +142,7 @@ router.post('/backup', jsonParser, async (request, response) => { | |||
| 142 | const handle = request.body.handle; | 142 | const handle = request.body.handle; |
| 143 | 143 | ||
| 144 | if (!handle) { | 144 | if (!handle) { |
| 145 | console.error('Backup failed: Missing required fields'); | 145 | console.warn('Backup failed: Missing required fields'); |
| 146 | return response.status(400).json({ error: 'Missing required fields' }); | 146 | return response.status(400).json({ error: 'Missing required fields' }); |
| 147 | } | 147 | } |
| 148 | 148 | ||
| @@ -163,7 +163,7 @@ router.post('/reset-settings', jsonParser, async (request, response) => { | |||
| 163 | const password = request.body.password; | 163 | const password = request.body.password; |
| 164 | 164 | ||
| 165 | if (request.user.profile.password && request.user.profile.password !== getPasswordHash(password, request.user.profile.salt)) { | 165 | if (request.user.profile.password && request.user.profile.password !== getPasswordHash(password, request.user.profile.salt)) { |
| 166 | console.error('Reset settings failed: Incorrect password'); | 166 | console.warn('Reset settings failed: Incorrect password'); |
| 167 | return response.status(403).json({ error: 'Incorrect password' }); | 167 | return response.status(403).json({ error: 'Incorrect password' }); |
| 168 | } | 168 | } |
| 169 | 169 | ||
| @@ -181,7 +181,7 @@ router.post('/reset-settings', jsonParser, async (request, response) => { | |||
| 181 | router.post('/change-name', jsonParser, async (request, response) => { | 181 | router.post('/change-name', jsonParser, async (request, response) => { |
| 182 | try { | 182 | try { |
| 183 | if (!request.body.name || !request.body.handle) { | 183 | if (!request.body.name || !request.body.handle) { |
| 184 | console.error('Change name failed: Missing required fields'); | 184 | console.warn('Change name failed: Missing required fields'); |
| 185 | return response.status(400).json({ error: 'Missing required fields' }); | 185 | return response.status(400).json({ error: 'Missing required fields' }); |
| 186 | } | 186 | } |
| 187 | 187 | ||
| @@ -194,7 +194,7 @@ router.post('/change-name', jsonParser, async (request, response) => { | |||
| 194 | const user = await storage.getItem(toKey(request.body.handle)); | 194 | const user = await storage.getItem(toKey(request.body.handle)); |
| 195 | 195 | ||
| 196 | if (!user) { | 196 | if (!user) { |
| 197 | console.error('Change name failed: User not found'); | 197 | console.warn('Change name failed: User not found'); |
| 198 | return response.status(404).json({ error: 'User not found' }); | 198 | return response.status(404).json({ error: 'User not found' }); |
| 199 | } | 199 | } |
| 200 | 200 | ||
| @@ -225,19 +225,19 @@ router.post('/reset-step1', jsonParser, async (request, response) => { | |||
| 225 | router.post('/reset-step2', jsonParser, async (request, response) => { | 225 | router.post('/reset-step2', jsonParser, async (request, response) => { |
| 226 | try { | 226 | try { |
| 227 | if (!request.body.code) { | 227 | if (!request.body.code) { |
| 228 | console.error('Recover step 2 failed: Missing required fields'); | 228 | console.warn('Recover step 2 failed: Missing required fields'); |
| 229 | return response.status(400).json({ error: 'Missing required fields' }); | 229 | return response.status(400).json({ error: 'Missing required fields' }); |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | if (request.user.profile.password && request.user.profile.password !== getPasswordHash(request.body.password, request.user.profile.salt)) { | 232 | if (request.user.profile.password && request.user.profile.password !== getPasswordHash(request.body.password, request.user.profile.salt)) { |
| 233 | console.error('Recover step 2 failed: Incorrect password'); | 233 | console.warn('Recover step 2 failed: Incorrect password'); |
| 234 | return response.status(400).json({ error: 'Incorrect password' }); | 234 | return response.status(400).json({ error: 'Incorrect password' }); |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | const code = RESET_CACHE.get(request.user.profile.handle); | 237 | const code = RESET_CACHE.get(request.user.profile.handle); |
| 238 | 238 | ||
| 239 | if (!code || code !== request.body.code) { | 239 | if (!code || code !== request.body.code) { |
| 240 | console.error('Recover step 2 failed: Incorrect code'); | 240 | console.warn('Recover step 2 failed: Incorrect code'); |
| 241 | return response.status(400).json({ error: 'Incorrect code' }); | 241 | return response.status(400).json({ error: 'Incorrect code' }); |
| 242 | } | 242 | } |
| 243 | 243 | ||
| @@ -56,7 +56,7 @@ router.post('/list', async (_request, response) => { | |||
| 56 | router.post('/login', jsonParser, async (request, response) => { | 56 | router.post('/login', jsonParser, async (request, response) => { |
| 57 | try { | 57 | try { |
| 58 | if (!request.body.handle) { | 58 | if (!request.body.handle) { |
| 59 | console.error('Login failed: Missing required fields'); | 59 | console.warn('Login failed: Missing required fields'); |
| 60 | return response.status(400).json({ error: 'Missing required fields' }); | 60 | return response.status(400).json({ error: 'Missing required fields' }); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| @@ -72,12 +72,12 @@ router.post('/login', jsonParser, async (request, response) => { | |||
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | if (!user.enabled) { | 74 | if (!user.enabled) { |
| 75 | console.error('Login failed: User', user.handle, 'is disabled'); | 75 | console.warn('Login failed: User', user.handle, 'is disabled'); |
| 76 | return response.status(403).json({ error: 'User is disabled' }); | 76 | return response.status(403).json({ error: 'User is disabled' }); |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | if (user.password && user.password !== getPasswordHash(request.body.password, user.salt)) { | 79 | if (user.password && user.password !== getPasswordHash(request.body.password, user.salt)) { |
| 80 | console.error('Login failed: Incorrect password for', user.handle); | 80 | console.warn('Login failed: Incorrect password for', user.handle); |
| 81 | return response.status(403).json({ error: 'Incorrect credentials' }); | 81 | return response.status(403).json({ error: 'Incorrect credentials' }); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| @@ -104,7 +104,7 @@ router.post('/login', jsonParser, async (request, response) => { | |||
| 104 | router.post('/recover-step1', jsonParser, async (request, response) => { | 104 | router.post('/recover-step1', jsonParser, async (request, response) => { |
| 105 | try { | 105 | try { |
| 106 | if (!request.body.handle) { | 106 | if (!request.body.handle) { |
| 107 | console.error('Recover step 1 failed: Missing required fields'); | 107 | console.warn('Recover step 1 failed: Missing required fields'); |
| 108 | return response.status(400).json({ error: 'Missing required fields' }); | 108 | return response.status(400).json({ error: 'Missing required fields' }); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| @@ -144,7 +144,7 @@ router.post('/recover-step1', jsonParser, async (request, response) => { | |||
| 144 | router.post('/recover-step2', jsonParser, async (request, response) => { | 144 | router.post('/recover-step2', jsonParser, async (request, response) => { |
| 145 | try { | 145 | try { |
| 146 | if (!request.body.handle || !request.body.code) { | 146 | if (!request.body.handle || !request.body.code) { |
| 147 | console.error('Recover step 2 failed: Missing required fields'); | 147 | console.warn('Recover step 2 failed: Missing required fields'); |
| 148 | return response.status(400).json({ error: 'Missing required fields' }); | 148 | return response.status(400).json({ error: 'Missing required fields' }); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| @@ -158,7 +158,7 @@ router.post('/recover-step2', jsonParser, async (request, response) => { | |||
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | if (!user.enabled) { | 160 | if (!user.enabled) { |
| 161 | console.error('Recover step 2 failed: User', user.handle, 'is disabled'); | 161 | console.warn('Recover step 2 failed: User', user.handle, 'is disabled'); |
| 162 | return response.status(403).json({ error: 'User is disabled' }); | 162 | return response.status(403).json({ error: 'User is disabled' }); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| @@ -166,7 +166,7 @@ router.post('/recover-step2', jsonParser, async (request, response) => { | |||
| 166 | 166 | ||
| 167 | if (request.body.code !== mfaCode) { | 167 | if (request.body.code !== mfaCode) { |
| 168 | await recoverLimiter.consume(ip); | 168 | await recoverLimiter.consume(ip); |
| 169 | console.error('Recover step 2 failed: Incorrect code'); | 169 | console.warn('Recover step 2 failed: Incorrect code'); |
| 170 | return response.status(403).json({ error: 'Incorrect code' }); | 170 | return response.status(403).json({ error: 'Incorrect code' }); |
| 171 | } | 171 | } |
| 172 | 172 | ||