Update server/status.js

Add persistent Bitcoin address watchlist
This commit is contained in:
2026-08-29 10:22:31 +00:00
parent b13136b6e4
commit da8928c993
+124
View File
@@ -5,6 +5,11 @@ const {
createSession, createSession,
isValidSession, isValidSession,
} = require('./auth'); } = require('./auth');
const {
listAddresses,
addAddress,
removeAddress,
} = require('./addresses');
const port = 8080; const port = 8080;
const fulcrumTimeoutMs = 3000; const fulcrumTimeoutMs = 3000;
@@ -265,6 +270,125 @@ const server = http.createServer(async (req, res) => {
return return
} }
if (req.method === 'GET' && req.url === '/api/addresses') {
if (!isValidSession(req)) {
res.writeHead(401, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ error: 'Authentication required' }))
return
}
try {
const addresses = await listAddresses()
res.writeHead(200, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ addresses }))
} catch (error) {
console.error('Failed to list addresses:', error)
res.writeHead(500, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({
error: 'Failed to read address watchlist',
}))
}
return
}
if (req.method === 'POST' && req.url === '/api/addresses') {
if (!isValidSession(req)) {
res.writeHead(401, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ error: 'Authentication required' }))
return
}
let body = ''
req.on('data', (chunk) => {
body += chunk
})
req.on('end', async () => {
try {
const input = JSON.parse(body)
const entry = await addAddress(
input.address,
input.label,
)
res.writeHead(201, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify(entry))
} catch (error) {
const message = error instanceof Error
? error.message
: 'Failed to add address'
res.writeHead(400, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ error: message }))
}
})
return
}
if (req.method === 'DELETE' && req.url === '/api/addresses') {
if (!isValidSession(req)) {
res.writeHead(401, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ error: 'Authentication required' }))
return
}
let body = ''
req.on('data', (chunk) => {
body += chunk
})
req.on('end', async () => {
try {
const input = JSON.parse(body)
await removeAddress(input.address)
res.writeHead(200, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ ok: true }))
} catch (error) {
const message = error instanceof Error
? error.message
: 'Failed to remove address'
res.writeHead(400, {
'Content-Type': 'application/json',
})
res.end(JSON.stringify({ error: message }))
}
})
return
}
if (req.url === '/api/status') { if (req.url === '/api/status') {
if (!isValidSession(req)) { if (!isValidSession(req)) {
res.writeHead(401, { res.writeHead(401, {