Initial commit
This commit is contained in:
80
api/modules/remote/routes.ts
Normal file
80
api/modules/remote/routes.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import express, { type Request, type Response, type Router } from 'express'
|
||||
import { asyncHandler } from '../../utils/asyncHandler.js'
|
||||
import { successResponse } from '../../utils/response.js'
|
||||
import { RemoteService, type DeviceData } from './service.js'
|
||||
|
||||
export interface RemoteRoutesDependencies {
|
||||
remoteService: RemoteService
|
||||
}
|
||||
|
||||
export const createRemoteRoutes = (deps: RemoteRoutesDependencies): Router => {
|
||||
const router = express.Router()
|
||||
const { remoteService } = deps
|
||||
|
||||
router.get(
|
||||
'/config',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const config = await remoteService.getConfig()
|
||||
successResponse(res, config)
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/config',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const config = req.body
|
||||
await remoteService.saveConfig(config)
|
||||
successResponse(res, null)
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/screenshot',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const deviceName = req.query.device as string | undefined
|
||||
const buffer = await remoteService.getScreenshot(deviceName)
|
||||
if (!buffer) {
|
||||
return successResponse(res, '')
|
||||
}
|
||||
const base64 = `data:image/png;base64,${buffer.toString('base64')}`
|
||||
successResponse(res, base64)
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/screenshot',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const { dataUrl, deviceName } = req.body
|
||||
console.log('[Remote] saveScreenshot called:', { deviceName, hasDataUrl: !!dataUrl })
|
||||
await remoteService.saveScreenshot(dataUrl, deviceName)
|
||||
successResponse(res, null)
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/data',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const deviceName = req.query.device as string | undefined
|
||||
const data = await remoteService.getData(deviceName)
|
||||
successResponse(res, data)
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/data',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const { deviceName, lastConnected } = req.body
|
||||
const data: DeviceData = {}
|
||||
if (lastConnected !== undefined) {
|
||||
data.lastConnected = lastConnected
|
||||
}
|
||||
await remoteService.saveData(data, deviceName)
|
||||
successResponse(res, null)
|
||||
}),
|
||||
)
|
||||
|
||||
return router
|
||||
}
|
||||
|
||||
const remoteService = new RemoteService()
|
||||
export default createRemoteRoutes({ remoteService })
|
||||
Reference in New Issue
Block a user