front-dev/api/server/services/Config/loadAsyncEndpoints.js

35 lines
1.1 KiB
JavaScript
Raw Normal View History

const path = require('path');
const { logger } = require('@librechat/data-schemas');
const { loadServiceKey, isUserProvided } = require('@librechat/api');
const { config } = require('./EndpointService');
async function loadAsyncEndpoints() {
let serviceKey, googleUserProvides;
const { googleKey } = config;
/** Check if GOOGLE_KEY is provided at all(including 'user_provided') */
const isGoogleKeyProvided = googleKey && googleKey.trim() !== '';
if (isGoogleKeyProvided) {
/** If GOOGLE_KEY is provided, check if it's user_provided */
googleUserProvides = isUserProvided(googleKey);
} else {
/** Only attempt to load service key if GOOGLE_KEY is not provided */
const serviceKeyPath =
process.env.GOOGLE_SERVICE_KEY_FILE || path.join(__dirname, '../../..', 'data', 'auth.json');
try {
serviceKey = await loadServiceKey(serviceKeyPath);
} catch (error) {
logger.error('Error loading service key', error);
serviceKey = null;
}
}
const google = serviceKey || isGoogleKeyProvided ? { userProvide: googleUserProvides } : false;
return { google };
}
module.exports = loadAsyncEndpoints;