← back to Dear Bubbe Admin
backend/routes/scanner.js
113 lines
const express = require('express')
const MessageInterceptor = require('../middleware/MessageInterceptor')
const router = express.Router()
// Initialize message interceptor (will be set by server)
let messageInterceptor = null
// Set the interceptor instance (called from server.js)
router.setInterceptor = (interceptor) => {
messageInterceptor = interceptor
}
// Public endpoint for scanning messages (no auth required for integration)
router.post('/scan-message', async (req, res) => {
try {
if (!messageInterceptor) {
return res.status(503).json({
success: false,
error: 'Scanner not initialized'
})
}
const messageData = req.body
// Validate required fields
if (!messageData.message) {
return res.status(400).json({
success: false,
error: 'Message is required'
})
}
console.log(`[SCANNER] Processing message from ${messageData.userId || 'unknown'}`)
const result = await messageInterceptor.processMessage(messageData)
res.json({
success: true,
result
})
} catch (error) {
console.error('[SCANNER] Error:', error)
res.status(500).json({
success: false,
error: error.message
})
}
})
// Health check for scanner
router.get('/scanner/health', (req, res) => {
res.json({
success: true,
status: 'healthy',
timestamp: new Date(),
scannerReady: !!messageInterceptor
})
})
// Get scanner stats (auth required)
router.get('/scanner/stats', async (req, res) => {
try {
// This would typically require authentication, but for now just return basic stats
const stats = {
processed: messageInterceptor?.processedMessages?.size || 0,
uptime: process.uptime(),
timestamp: new Date()
}
res.json({
success: true,
stats
})
} catch (error) {
console.error('[SCANNER] Stats error:', error)
res.status(500).json({
success: false,
error: error.message
})
}
})
// Integration guide endpoint
router.get('/integration-guide', (req, res) => {
res.json({
success: true,
integration: {
endpoint: '/api/scan-message',
method: 'POST',
example: {
message: 'User message to scan',
userId: 'user123',
sessionId: 'session456',
ip: '192.168.1.1',
userAgent: 'Mozilla/5.0...',
userProfile: {}
},
response: {
success: true,
result: {
processed: true,
blocked: false,
violations: [],
alertsCreated: 0
}
}
},
codeExample: MessageInterceptor.createIntegrationCode()
})
})
module.exports = router