1adb39f02b
forgot to push this commit before merge ah sorry!!!
65 lines
2.5 KiB
JavaScript
65 lines
2.5 KiB
JavaScript
const appRoot = require( 'app-root-path' )
|
|
const { ForbiddenError } = require( 'apollo-server-express' )
|
|
|
|
const { authorizeResolver } = require( `${appRoot}/modules/shared` )
|
|
const { createWebhook, getWebhook, updateWebhook, deleteWebhook, getStreamWebhooks, getLastWebhookEvents, getWebhookEventsCount } = require( '../../services/webhooks' )
|
|
|
|
|
|
module.exports = {
|
|
Stream: {
|
|
async webhooks( parent, args, context, info ) {
|
|
await authorizeResolver( context.userId, parent.id, 'stream:owner' )
|
|
|
|
if ( args.id ) {
|
|
let wh = await getWebhook( { id: args.id } )
|
|
let items = wh ? [ wh ] : []
|
|
return { items, totalCount: items.length }
|
|
}
|
|
|
|
let items = await getStreamWebhooks( { streamId: parent.id } )
|
|
return { items, totalCount: items.length }
|
|
}
|
|
},
|
|
|
|
Webhook: {
|
|
async history( parent, args, context, info ) {
|
|
let items = await getLastWebhookEvents( { webhookId: parent.id, limit: args.limit } )
|
|
let totalCount = await getWebhookEventsCount( { webhookId: parent.id } )
|
|
|
|
return { items, totalCount }
|
|
}
|
|
},
|
|
|
|
Mutation: {
|
|
async webhookCreate( parent, args, context, info ) {
|
|
await authorizeResolver( context.userId, args.webhook.streamId, 'stream:owner' )
|
|
|
|
let id = await createWebhook( { streamId: args.webhook.streamId, url: args.webhook.url, description: args.webhook.description, secret: args.webhook.secret, enabled: args.webhook.enabled !== false, triggers: args.webhook.triggers } )
|
|
|
|
return id
|
|
},
|
|
async webhookUpdate( parent, args, context, info ) {
|
|
await authorizeResolver( context.userId, args.webhook.streamId, 'stream:owner' )
|
|
|
|
let wh = await getWebhook( { id: args.webhook.id } )
|
|
if ( args.webhook.streamId !== wh.streamId )
|
|
throw new ForbiddenError( 'The webhook id and stream id do not match. Please check your inputs.' )
|
|
|
|
let updated = await updateWebhook( { id: args.webhook.id, url: args.webhook.url, description: args.webhook.description, secret: args.webhook.secret, enabled: args.webhook.enabled !== false, triggers: args.webhook.triggers } )
|
|
|
|
return !!updated
|
|
},
|
|
async webhookDelete( parent, args, context, info ) {
|
|
await authorizeResolver( context.userId, args.webhook.streamId, 'stream:owner' )
|
|
|
|
let wh = await getWebhook( { id: args.webhook.id } )
|
|
if ( args.webhook.streamId !== wh.streamId )
|
|
throw new ForbiddenError( 'The webhook id and stream id do not match. Please check your inputs.' )
|
|
|
|
let deleted = await deleteWebhook( { id: args.webhook.id } )
|
|
|
|
return !!deleted
|
|
}
|
|
}
|
|
}
|