98 lines
3.6 KiB
TypeScript
98 lines
3.6 KiB
TypeScript
import { Router } from 'express'
|
|
|
|
import {
|
|
closeClaimSession,
|
|
confirmClaimRole,
|
|
createClaimSession,
|
|
getClaimDetail,
|
|
getClaimScreenshotPath,
|
|
getClaimSessionSummary,
|
|
reloadClaimSession,
|
|
redeemClaimTask,
|
|
} from '../services/claim/claim-session-service.js'
|
|
import {
|
|
confirmKuaishouCloudClaimRole,
|
|
getKuaishouCloudClaimGuideAssetPath,
|
|
redeemKuaishouCloudClaim,
|
|
verifyKuaishouCloudClaimTicket,
|
|
} from '../services/claim/kuaishou-cloud-claim-service.js'
|
|
import {
|
|
buildNotFoundPayload,
|
|
buildSuccessPayload,
|
|
createRouteFileHandler,
|
|
createRouteHandler,
|
|
sendRouteError,
|
|
} from '../utils/http.js'
|
|
|
|
const router = Router()
|
|
|
|
router.get('/:token', createRouteHandler(
|
|
(req) => getClaimDetail(req.params.token),
|
|
{ errorMessage: '查询领取详情失败', scope: '[claims/:token]' },
|
|
))
|
|
|
|
router.post('/:token/session', createRouteHandler(
|
|
(req) => createClaimSession(req.params.token, req.body),
|
|
{ successMessage: '浏览器会话已创建', errorMessage: '创建领取会话失败', scope: '[claims/:token/session]' },
|
|
))
|
|
|
|
router.get('/:token/session/summary', createRouteHandler(
|
|
(req) => getClaimSessionSummary(req.params.token),
|
|
{ errorMessage: '查询领取会话摘要失败', scope: '[claims/:token/session/summary]' },
|
|
))
|
|
|
|
router.post('/:token/session/refresh', async (req, res) => {
|
|
try {
|
|
const data = await reloadClaimSession(req.params.token)
|
|
res.json(buildSuccessPayload(data, data.session ? (data.session.notice || '后端页面已刷新') : '领取会话已重置'))
|
|
} catch (error) {
|
|
sendRouteError(res, error, '刷新领取会话失败', '[claims/:token/session/refresh]')
|
|
}
|
|
})
|
|
|
|
router.delete('/:token/session', createRouteHandler(
|
|
(req) => closeClaimSession(req.params.token),
|
|
{ successMessage: '领取会话已关闭', errorMessage: '关闭领取会话失败', scope: '[claims/:token/session]' },
|
|
))
|
|
|
|
router.post('/:token/confirm-role', createRouteHandler(
|
|
(req) => confirmClaimRole(req.params.token),
|
|
{ successMessage: '角色已确认', errorMessage: '确认角色失败', scope: '[claims/:token/confirm-role]' },
|
|
))
|
|
|
|
router.post('/:token/redeem', createRouteHandler(
|
|
(req) => redeemClaimTask(req.params.token),
|
|
{ successMessage: '兑换完成', errorMessage: '执行领取兑换失败', scope: '[claims/:token/redeem]' },
|
|
))
|
|
|
|
router.post('/:token/kuaishou-cloud/verify-ticket', createRouteHandler(
|
|
(req) => verifyKuaishouCloudClaimTicket(req.params.token, req.body),
|
|
{ successMessage: '核销码校验成功', errorMessage: '校验核销码失败', scope: '[claims/:token/kuaishou-cloud/verify-ticket]' },
|
|
))
|
|
|
|
router.post('/:token/kuaishou-cloud/confirm-role', createRouteHandler(
|
|
(req) => confirmKuaishouCloudClaimRole(req.params.token),
|
|
{ successMessage: '角色已确认', errorMessage: '确认角色失败', scope: '[claims/:token/kuaishou-cloud/confirm-role]' },
|
|
))
|
|
|
|
router.post('/:token/kuaishou-cloud/redeem', createRouteHandler(
|
|
(req) => redeemKuaishouCloudClaim(req.params.token),
|
|
{ successMessage: '兑换请求已提交', errorMessage: '兑换失败', scope: '[claims/:token/kuaishou-cloud/redeem]' },
|
|
))
|
|
|
|
router.get('/:token/screenshot', createRouteFileHandler(
|
|
(req) => getClaimScreenshotPath(req.params.token),
|
|
{ errorMessage: '读取领取截图失败', scope: '[claims/:token/screenshot]' },
|
|
))
|
|
|
|
router.get('/assets/kuaishou-cloud/:filename', createRouteFileHandler(
|
|
(req) => getKuaishouCloudClaimGuideAssetPath(req.params.filename),
|
|
{ errorMessage: '读取指引图片失败', scope: '[claims/assets/kuaishou-cloud/:filename]' },
|
|
))
|
|
|
|
router.use((req, res) => {
|
|
res.status(404).json(buildNotFoundPayload(req))
|
|
})
|
|
|
|
export default router
|