添加快手 Cloud 换绑角色功能

This commit is contained in:
yml
2026-05-30 11:23:52 +08:00
parent 681ff44cbc
commit 1c50569ea9
22 changed files with 1537 additions and 953 deletions
+55 -54
View File
@@ -1,88 +1,89 @@
import { Router } from "express";
import { Router } from 'express'
import { createRateLimitMiddleware, getParamRateLimitKey } from "../middleware/rate-limit.js";
import { createRateLimitMiddleware, getParamRateLimitKey } from '../middleware/rate-limit.js'
import {
confirmKuaishouCloudClaimRole,
getKuaishouCloudClaimDetail,
getKuaishouCloudClaimGuideAssetPath,
rebindKuaishouCloudClaimRole,
redeemKuaishouCloudClaim,
verifyKuaishouCloudClaimTicket,
} from "../services/claim/kuaishou-cloud-claim-service.js";
import {
buildNotFoundPayload,
createRouteFileHandler,
createRouteHandler,
} from "../utils/http.js";
} from '../services/claim/kuaishou-cloud-claim-service.js'
import { buildNotFoundPayload, createRouteFileHandler, createRouteHandler } from '../utils/http.js'
const router = Router();
const router = Router()
const claimReadRateLimit = createRateLimitMiddleware({
scope: "claim:read",
scope: 'claim:read',
windowMs: 60_000,
max: 120,
key: getParamRateLimitKey("token"),
});
key: getParamRateLimitKey('token'),
})
const claimWriteRateLimit = createRateLimitMiddleware({
scope: "claim:write",
scope: 'claim:write',
windowMs: 60_000,
max: 30,
key: getParamRateLimitKey("token"),
});
key: getParamRateLimitKey('token'),
})
router.get(
"/:token",
'/:token',
claimReadRateLimit,
createRouteHandler((req) => getKuaishouCloudClaimDetail(req.params.token), {
errorMessage: "查询快手领取详情失败",
scope: "[claims/:token]",
})
);
errorMessage: '查询快手领取详情失败',
scope: '[claims/:token]',
}),
)
router.post(
"/:token/kuaishou-cloud/verify-ticket",
'/:token/kuaishou-cloud/verify-ticket',
claimWriteRateLimit,
createRouteHandler(
(req) => verifyKuaishouCloudClaimTicket(req.params.token, req.body),
{
successMessage: "核销码校验成功",
errorMessage: "校验核销码失败",
scope: "[claims/: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",
'/:token/kuaishou-cloud/confirm-role',
claimWriteRateLimit,
createRouteHandler((req) => confirmKuaishouCloudClaimRole(req.params.token), {
successMessage: "角色已确认",
errorMessage: "确认角色失败",
scope: "[claims/:token/kuaishou-cloud/confirm-role]",
})
);
successMessage: '角色已确认',
errorMessage: '确认角色失败',
scope: '[claims/:token/kuaishou-cloud/confirm-role]',
}),
)
router.post(
"/:token/kuaishou-cloud/redeem",
'/:token/kuaishou-cloud/rebind-role',
claimWriteRateLimit,
createRouteHandler((req) => rebindKuaishouCloudClaimRole(req.params.token), {
successMessage: '角色换绑资源已准备完成',
errorMessage: '换绑角色失败',
scope: '[claims/:token/kuaishou-cloud/rebind-role]',
}),
)
router.post(
'/:token/kuaishou-cloud/redeem',
claimWriteRateLimit,
createRouteHandler((req) => redeemKuaishouCloudClaim(req.params.token), {
successMessage: "兑换请求已提交",
errorMessage: "兑换失败",
scope: "[claims/:token/kuaishou-cloud/redeem]",
})
);
successMessage: '兑换请求已提交',
errorMessage: '兑换失败',
scope: '[claims/:token/kuaishou-cloud/redeem]',
}),
)
router.get(
"/assets/kuaishou-cloud/:filename",
createRouteFileHandler(
(req) => getKuaishouCloudClaimGuideAssetPath(req.params.filename),
{
errorMessage: "读取指引图片失败",
scope: "[claims/assets/kuaishou-cloud/:filename]",
}
)
);
'/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));
});
res.status(404).json(buildNotFoundPayload(req))
})
export default router;
export default router