Files
apiAi/server.js
2025-04-10 00:11:37 -04:00

56 lines
1.7 KiB
JavaScript

require("dotenv").config(); // Load environment variables from .env file
const express = require("express");
const axios = require("axios");
const bodyParser = require("body-parser");
const app = express();
const port = 3000; // Backend server will run on this port
// Middleware to parse JSON request bodies
app.use(bodyParser.json());
// API Key validation middleware
const validateApiKey = (req, res, next) => {
const apiKey = req.headers["api-key"];
const authHeader = req.headers['authorization'];
console.log('Authorization header:', authHeader);
console.log('!apiKey', boolean(!apiKey))
if (!apiKey) {
return res.status(400).json({ error: "API key is missing" });
}
console.log('checking api', apiKey !== process.env.API_KEY)
if (apiKey !== process.env.API_KEY) {
return res.status(403).json({ error: "Invalid API key" });
}
next(); // Proceed if the API key is valid
};
// Forward request to localhost:11434 (ollama)
app.post("/api/generate", validateApiKey, async (req, res) => {
try {
// Forwarding the request to localhost:11434 with the prompt
console.log('Body: ', req.body)
const response = await axios.post(
"http://localhost:11434/api/generate",
req.body
);
// Send the response from localhost:11434 back to the client
res.status(200).json(response.data);
} catch (error) {
// Enhanced error logging
console.error("Error forwarding request to localhost:11434:", error.response ? error.response.data : error.message);
res.status(500).json({ error: "Internal Server Error", message: error.message });
}
});
// Start the server
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});