54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import { Router } from 'express';
|
|
import multer from 'multer';
|
|
import { raspiService } from '../services/raspi.service.js';
|
|
|
|
const router = Router();
|
|
|
|
// Multer config - store in memory for proxying to RasPi
|
|
const upload = multer({ storage: multer.memoryStorage() });
|
|
|
|
router.post('/step/forward', async (_req, res) => {
|
|
try {
|
|
const result = await raspiService.motorStepForward();
|
|
res.json(result);
|
|
} catch (err: unknown) {
|
|
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
res.status(500).json({ error: `Motor step forward failed: ${message}` });
|
|
}
|
|
});
|
|
|
|
router.post('/step/backward', async (_req, res) => {
|
|
try {
|
|
const result = await raspiService.motorStepBackward();
|
|
res.json(result);
|
|
} catch (err: unknown) {
|
|
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
res.status(500).json({ error: `Motor step backward failed: ${message}` });
|
|
}
|
|
});
|
|
|
|
router.post('/stop', async (_req, res) => {
|
|
try {
|
|
const result = await raspiService.motorStop();
|
|
res.json(result);
|
|
} catch (err: unknown) {
|
|
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
res.status(500).json({ error: `Motor stop failed: ${message}` });
|
|
}
|
|
});
|
|
|
|
router.post('/upload', upload.single('file'), async (req, res) => {
|
|
try {
|
|
if (!req.file) {
|
|
return res.status(400).json({ error: 'No audio file provided' });
|
|
}
|
|
const result = await raspiService.uploadAudio(req.file.buffer, req.file.originalname);
|
|
res.json(result);
|
|
} catch (err: unknown) {
|
|
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
res.status(500).json({ error: `Audio upload failed: ${message}` });
|
|
}
|
|
});
|
|
|
|
export default router;
|