Merge pull request #450 from shocknet/misc-fixes

Try catch in gun rpc endpoints
This commit is contained in:
CapDog 2021-08-20 16:27:17 -04:00 committed by GitHub
commit 6a107adb64

View file

@ -2410,108 +2410,148 @@ module.exports = async (
const EPUB_FOR_DECRYPT_HEADER = 'epub-for-decryption' const EPUB_FOR_DECRYPT_HEADER = 'epub-for-decryption'
ap.get('/api/gun/once/:path', async (req, res) => { ap.get('/api/gun/once/:path', async (req, res) => {
const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER) try {
const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER) const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER)
const { path } = req.params const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER)
logger.info(`gun ONCE: ${path}`) const { path } = req.params
res.status(200).json({ logger.info(`gun ONCE: ${path}`)
data: await handleGunFetch({ const data = await handleGunFetch({
path, path,
startFromUserGraph: false, startFromUserGraph: false,
type: 'once', type: 'once',
publicKeyForDecryption, publicKeyForDecryption,
epubForDecryption epubForDecryption
}) })
}) res.status(200).json({
data
})
} catch (e) {
logger.error(e)
res.status(500).json({
errorMessage: e.message
})
}
}) })
ap.get('/api/gun/load/:path', async (req, res) => { ap.get('/api/gun/load/:path', async (req, res) => {
const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER) try {
const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER) const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER)
const { path } = req.params const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER)
logger.info(`gun LOAD: ${path}`) const { path } = req.params
res.status(200).json({ logger.info(`gun LOAD: ${path}`)
data: await handleGunFetch({ const data = await handleGunFetch({
path, path,
startFromUserGraph: false, startFromUserGraph: false,
type: 'load', type: 'load',
publicKeyForDecryption, publicKeyForDecryption,
epubForDecryption epubForDecryption
}) })
}) res.status(200).json({
data
})
} catch (e) {
logger.error(e)
res.status(500).json({
errorMessage: e.message
})
}
}) })
ap.get('/api/gun/user/once/:path', async (req, res) => { ap.get('/api/gun/user/once/:path', async (req, res) => {
const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER) try {
const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER) const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER)
const { path } = req.params const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER)
logger.info(`gun otheruser ONCE: ${path}`) const { path } = req.params
res.status(200).json({ logger.info(`gun otheruser ONCE: ${path}`)
data: await handleGunFetch({ const data = await handleGunFetch({
path, path,
startFromUserGraph: true, startFromUserGraph: true,
type: 'once', type: 'once',
publicKeyForDecryption, publicKeyForDecryption,
epubForDecryption epubForDecryption
}) })
}) res.status(200).json({
data
})
} catch (e) {
logger.error(e)
res.status(500).json({
errorMessage: e.message
})
}
}) })
ap.get('/api/gun/user/load/:path', async (req, res) => { ap.get('/api/gun/user/load/:path', async (req, res) => {
const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER) try {
const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER) const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER)
const { path } = req.params const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER)
logger.info(`gun self user LOAD: ${path}`) const { path } = req.params
res.status(200).json({ logger.info(`gun self user LOAD: ${path}`)
data: await handleGunFetch({ const data = await handleGunFetch({
path, path,
startFromUserGraph: true, startFromUserGraph: true,
type: 'load', type: 'load',
publicKeyForDecryption, publicKeyForDecryption,
epubForDecryption epubForDecryption
}) })
}) res.status(200).json({
data
})
} catch (e) {
logger.error(e)
res.status(500).json({
errorMessage: e.message
})
}
}) })
ap.get('/api/gun/otheruser/:publicKey/:type/:path', async (req, res) => { ap.get('/api/gun/otheruser/:publicKey/:type/:path', async (req, res) => {
const allowedTypes = ['once', 'load', 'open']
const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER)
const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER)
const { path /*:rawPath*/, publicKey, type } = req.params
logger.info(`gun otheruser ${type}: ${path}`)
// const path = decodeURI(rawPath)
if (!publicKey || publicKey === 'undefined') {
res.status(400).json({
errorMessage: 'Invalid publicKey specified'
})
return
}
if (!allowedTypes.includes(type)) {
res.status(400).json({
errorMessage: 'Invalid type specified'
})
return
}
try { try {
res.status(200).json({ const allowedTypes = ['once', 'load', 'open']
data: await handleGunFetch({ const publicKeyForDecryption = req.header(PUBKEY_FOR_DECRYPT_HEADER)
path, const epubForDecryption = req.header(EPUB_FOR_DECRYPT_HEADER)
startFromUserGraph: false, const { path /*:rawPath*/, publicKey, type } = req.params
type, logger.info(`gun otheruser ${type}: ${path}`)
publicKey, // const path = decodeURI(rawPath)
publicKeyForDecryption, if (!publicKey || publicKey === 'undefined') {
epubForDecryption res.status(400).json({
errorMessage: 'Invalid publicKey specified'
}) })
return
}
if (!allowedTypes.includes(type)) {
res.status(400).json({
errorMessage: 'Invalid type specified'
})
return
}
const data = await handleGunFetch({
path,
startFromUserGraph: false,
type,
publicKey,
publicKeyForDecryption,
epubForDecryption
}) })
} catch (err) { try {
res res.status(200).json({
.status( data
err.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500
)
.json({
errorMessage: err.message
}) })
} catch (err) {
res
.status(
err.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500
)
.json({
errorMessage: err.message
})
}
} catch (e) {
logger.error(e)
res.status(500).json({
errorMessage: e.message
})
} }
}) })
@ -2556,6 +2596,7 @@ module.exports = async (
ok: true ok: true
}) })
} catch (err) { } catch (err) {
logger.error(err)
res res
.status( .status(
err.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500 err.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500
@ -2577,6 +2618,7 @@ module.exports = async (
id id
}) })
} catch (err) { } catch (err) {
logger.error(err)
res res
.status( .status(
err.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500 err.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500
@ -2610,6 +2652,7 @@ module.exports = async (
res.status(200).json(results) res.status(200).json(results)
} catch (e) { } catch (e) {
logger.error(e)
res res
.status(e.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500) .status(e.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500)
.json({ .json({
@ -2619,19 +2662,33 @@ module.exports = async (
}) })
//this is for OBS notifications, not wired with UI. //this is for OBS notifications, not wired with UI.
ap.get('/api/subscribeStream', (req, res) => { ap.get('/api/subscribeStream', (req, res) => {
res.sendFile(path.join(__dirname, '/index.html')) try {
}) res.sendFile(path.join(__dirname, '/index.html'))
ap.post('/api/enableNotificationsOverlay', (req, res) => { } catch (e) {
const { postID } = req.body logger.error(e)
if (!postID) { res.status(500).json({
return res.status(400).json({ errorMessage: e.message
errorMessage: 'no post id provided' })
}
})
ap.post('/api/enableNotificationsOverlay', (req, res) => {
try {
const { postID } = req.body
if (!postID) {
return res.status(400).json({
errorMessage: 'no post id provided'
})
}
const accessId = TipsForwarder.enablePostNotifications(postID)
res.json({
accessId
})
} catch (e) {
logger.error(e)
res.status(500).json({
errorMessage: e.message
}) })
} }
const accessId = TipsForwarder.enablePostNotifications(postID)
res.json({
accessId
})
}) })
//this is for wasLive/isLive status //this is for wasLive/isLive status
ap.post('/api/listenStream', (req, res) => { ap.post('/api/listenStream', (req, res) => {