first commit
This commit is contained in:
75
server.js
Normal file
75
server.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const express = require('express');
|
||||
const multer = require('multer');
|
||||
const path = require('path');
|
||||
const cors = require('cors');
|
||||
const fs = require('fs');
|
||||
const axios = require('axios');
|
||||
|
||||
const app = express();
|
||||
const PORT = process.env.PORT || 3000;
|
||||
|
||||
// Middleware
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
app.use(express.static(path.join(__dirname)));
|
||||
|
||||
// Multer setup for file uploads
|
||||
const upload = multer({
|
||||
dest: path.join(__dirname, 'uploads/')
|
||||
});
|
||||
|
||||
// File upload endpoint
|
||||
app.post('/api/upload', upload.single('file'), async (req, res) => {
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: 'No file uploaded' });
|
||||
}
|
||||
// TODO: Integrate with Flowise API for summarization/quiz
|
||||
// Example: send file to Flowise and get summary/quiz
|
||||
// const flowiseResponse = await axios.post('FLOWISE_API_URL', ...);
|
||||
res.json({
|
||||
message: 'File uploaded successfully',
|
||||
filename: req.file.filename,
|
||||
originalname: req.file.originalname
|
||||
});
|
||||
});
|
||||
|
||||
// Placeholder endpoint for summarization/quiz (to be implemented)
|
||||
app.post('/api/flowise', async (req, res) => {
|
||||
// Simulate Flowise integration: read uploaded file and return a fake summary
|
||||
const { filename } = req.body;
|
||||
if (!filename) {
|
||||
return res.status(400).json({ error: 'Filename required' });
|
||||
}
|
||||
const filePath = path.join(__dirname, 'uploads', filename);
|
||||
try {
|
||||
const fileContent = fs.readFileSync(filePath, 'utf8');
|
||||
// TODO: Replace with actual Flowise API call
|
||||
// const flowiseResponse = await axios.post('FLOWISE_API_URL', { content: fileContent });
|
||||
// return res.json({ summary: flowiseResponse.data.summary });
|
||||
res.json({ summary: `Sample summary for file: ${filename}\n\n${fileContent.substring(0, 200)}...` });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: 'Could not read file for summary.' });
|
||||
}
|
||||
});
|
||||
|
||||
// Chatbot endpoint for chitchat with Flowise ChatGPT
|
||||
app.post('/api/chat', async (req, res) => {
|
||||
const { message } = req.body;
|
||||
if (!message) {
|
||||
return res.status(400).json({ error: 'Message required' });
|
||||
}
|
||||
try {
|
||||
const flowiseRes = await axios.post(
|
||||
'https://flowise.suika.cc/api/v1/prediction/5079e3d1-4e79-42f5-9c90-1142d9eede4c',
|
||||
{ question: message },
|
||||
{ headers: { 'Content-Type': 'application/json' } }
|
||||
);
|
||||
res.json({ reply: flowiseRes.data.text || flowiseRes.data.answer || 'No reply.' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: 'Failed to get reply from Flowise.' });
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`EduCat backend running on http://localhost:${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user