Files
audiopen-nextcloud/server.js
T
2026-05-19 16:31:19 -07:00

69 lines
1.5 KiB
JavaScript

import express from 'express'
import axios from 'axios'
const app = express()
app.use(express.json({ limit: '10mb' }))
const PORT = process.env.PORT || 3000
const NEXTCLOUD_URL = process.env.NEXTCLOUD_URL
const NEXTCLOUD_USERNAME = process.env.NEXTCLOUD_USERNAME
const NEXTCLOUD_PASSWORD = process.env.NEXTCLOUD_PASSWORD
const NEXTCLOUD_FOLDER = process.env.NEXTCLOUD_FOLDER || 'AudioPen'
app.post('/webhook', async (req, res) => {
try {
console.log('Received webhook')
console.log(JSON.stringify(req.body, null, 2))
// Try a few possible fields from AudioPen
const note =
req.body.note ||
req.body.text ||
req.body.content ||
JSON.stringify(req.body, null, 2)
const timestamp = new Date()
.toISOString()
.replace(/:/g, '-')
const filename = `note-${timestamp}.md`
const webdavUrl =
`${NEXTCLOUD_URL}` +
`/remote.php/dav/files/` +
`${NEXTCLOUD_USERNAME}/` +
`${NEXTCLOUD_FOLDER}/` +
`${filename}`
await axios.put(webdavUrl, note, {
auth: {
username: NEXTCLOUD_USERNAME,
password: NEXTCLOUD_PASSWORD
},
headers: {
'Content-Type': 'text/markdown'
}
})
console.log(`Uploaded ${filename}`)
res.status(200).json({
success: true,
filename
})
} catch (err) {
console.error(err.response?.data || err.message)
res.status(500).json({
success: false,
error: err.message
})
}
})
app.listen(PORT, () => {
console.log(`Webhook server listening on ${PORT}`)
})