diff --git a/api/gitea.js b/api/gitea.js index 5dc6422..95c6d35 100644 --- a/api/gitea.js +++ b/api/gitea.js @@ -6,29 +6,32 @@ const { formatMessage } = require('./formatters') * @returns {Object} - Normalized webhook data */ const normalizeGiteaPayload = (payload) => { - // Early return if no commits - if (!Array.isArray(payload.commits)) { + // Validate required fields + if (!payload?.repository?.full_name || !payload?.ref) { return { repository: { - full_name: payload.repository.full_name, - html_url: payload.repository.html_url || payload.repository.url, - id: payload.repository.id + full_name: payload?.repository?.full_name || 'unknown', + html_url: payload?.repository?.html_url || payload?.repository?.url || '#', + id: payload?.repository?.id || 0 }, - ref: payload.ref, + ref: payload?.ref || 'unknown', commits: [] } } + // Handle missing or invalid commits array + const commits = Array.isArray(payload.commits) ? payload.commits : [] + return { repository: { full_name: payload.repository.full_name, html_url: payload.repository.html_url || payload.repository.url, - id: payload.repository.id + id: payload.repository.id || 0 }, ref: payload.ref, - commits: payload.commits.map(commit => ({ - id: commit.id, - message: commit.message, + commits: commits.map(commit => ({ + id: commit.id || `${Date.now()}-${Math.random()}`, + message: commit.message || 'No message', stats: { additions: commit.added?.length || 0, deletions: commit.removed?.length || 0 diff --git a/api/github.js b/api/github.js index 59e4e55..ba48f8a 100644 --- a/api/github.js +++ b/api/github.js @@ -6,32 +6,35 @@ const { formatMessage } = require('./formatters') * @returns {Object} - Normalized webhook data */ const normalizeGithubPayload = (payload) => { - // Early return if no commits - if (!Array.isArray(payload.commits)) { + // Validate required fields + if (!payload?.repository?.full_name || !payload?.repository?.html_url || !payload?.ref) { return { repository: { - full_name: payload.repository.full_name, - html_url: payload.repository.html_url, - id: payload.repository.id + full_name: payload?.repository?.full_name || 'unknown', + html_url: payload?.repository?.html_url || '#', + id: payload?.repository?.id || 0 }, - ref: payload.ref, + ref: payload?.ref || 'unknown', commits: [] } } + // Handle missing or invalid commits array + const commits = Array.isArray(payload.commits) ? payload.commits : [] + return { repository: { full_name: payload.repository.full_name, html_url: payload.repository.html_url, - id: payload.repository.id + id: payload.repository.id || 0 }, ref: payload.ref, - commits: payload.commits.map(commit => ({ - id: commit.id, - message: commit.message, + commits: commits.map(commit => ({ + id: commit.id || `${Date.now()}-${Math.random()}`, + message: commit.message || 'No message', stats: { - additions: commit.stats?.additions || 0, - deletions: commit.stats?.deletions || 0 + additions: Number(commit.stats?.additions) || 0, + deletions: Number(commit.stats?.deletions) || 0 } })) }