mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-16 02:40:39 +09:00
fix: address greptile routine review
This commit is contained in:
parent
99eb317600
commit
9093cfbe4f
6 changed files with 157 additions and 19 deletions
|
|
@ -132,6 +132,12 @@ function nextResultText(status: string, issueId?: string | null) {
|
|||
return status;
|
||||
}
|
||||
|
||||
function normalizeWebhookTimestampMs(rawTimestamp: string) {
|
||||
const parsed = Number(rawTimestamp);
|
||||
if (!Number.isFinite(parsed)) return null;
|
||||
return parsed > 1e12 ? parsed : parsed * 1000;
|
||||
}
|
||||
|
||||
export function routineService(db: Db, deps: { heartbeat?: IssueAssignmentWakeupDeps } = {}) {
|
||||
const issueSvc = issueService(db);
|
||||
const secretsSvc = secretService(db);
|
||||
|
|
@ -1064,8 +1070,8 @@ export function routineService(db: Db, deps: { heartbeat?: IssueAssignmentWakeup
|
|||
const providedSignature = input.signatureHeader?.trim() ?? "";
|
||||
const providedTimestamp = input.timestampHeader?.trim() ?? "";
|
||||
if (!providedSignature || !providedTimestamp) throw unauthorized();
|
||||
const tsMillis = Number(providedTimestamp);
|
||||
if (!Number.isFinite(tsMillis)) throw unauthorized();
|
||||
const tsMillis = normalizeWebhookTimestampMs(providedTimestamp);
|
||||
if (tsMillis == null) throw unauthorized();
|
||||
const replayWindowSec = trigger.replayWindowSec ?? 300;
|
||||
if (Math.abs(Date.now() - tsMillis) > replayWindowSec * 1000) {
|
||||
throw unauthorized();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue