Replace axios with native fetch in webhook utils

axios was required by src/utils/message.js and src/utils/webhook.js but was
never declared in package.json, so `npm install` never fetched it and the app
crashed on startup with MODULE_NOT_FOUND.

Switch both webhook POST calls to Node's built-in fetch (available since
Node 18; running on 22.12), removing the missing dependency entirely.
Behavior is preserved: JSON body with Content-Type header, and an explicit
response.ok check to keep axios's throw-on-non-2xx semantics. message.js now
returns parsed JSON (or text fallback) in place of axios's response.data.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Michilis
2026-06-26 22:31:37 +00:00
co-authored by Claude Opus 4.8
parent a837f58887
commit 51d26533b9
2 changed files with 20 additions and 7 deletions
+13 -3
View File
@@ -1,4 +1,3 @@
const axios = require('axios');
const logger = require('./logger');
// Function to send a note to a webhook
@@ -18,10 +17,21 @@ async function publishNoteWithKey(content, relays, privateKeyHex) {
}
// Send the payload to the webhook
const response = await axios.post(webhookUrl, payload);
const response = await fetch(webhookUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
if (!response.ok) {
throw new Error(`Webhook responded with status ${response.status}`);
}
logger.info(`✅ Successfully sent note to webhook: ${response.status}`);
return response.data; // Assuming the webhook returns some data
// Parse JSON if the webhook returns it, otherwise fall back to text
const contentType = response.headers.get('content-type') || '';
return contentType.includes('application/json')
? await response.json()
: await response.text();
} catch (error) {
logger.error('Error sending note to webhook:', error);
throw error;
+7 -4
View File
@@ -1,4 +1,3 @@
const axios = require('axios');
const logger = require('./logger');
// Function to send webhook notifications
@@ -10,10 +9,14 @@ async function sendWebhookNotification(action, data) {
}
try {
await axios.post(webhookUrl, {
action,
data
const response = await fetch(webhookUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ action, data })
});
if (!response.ok) {
throw new Error(`Webhook responded with status ${response.status}`);
}
logger.info(`Webhook notification sent for action: ${action}`);
} catch (error) {
logger.error('Failed to send webhook notification:', error);