Skip to content

An addon/plugin package to provide BugSnag error reporting services in AdonisJS 4.0+

License

Notifications You must be signed in to change notification settings

stitchng/adonis-bugsnag

Repository files navigation

adonis-bugsnag

An addon/plugin package to provide BugSnag error reporting services in AdonisJS 4.0+

NPM Version Build Status Coveralls

Getting Started

Install from the NPM Registry using the Adonis command so that all post-install instructions are run

    $ adonis install adonisjs-bugsnag
    
    $ adonis make:ehandler

Format the Exceptions/Handler.js file for an AdonisJS application to look like this

const BaseExceptionHandler = use('BaseExceptionHandler')
const bugsnag = use('BugSnag')

/**
 * This class handles all exceptions thrown during
 * the HTTP request lifecycle.
 *
 * @class ExceptionHandler
 */
class ExceptionHandler extends BaseExceptionHandler {
	/**
	 * Handle exception thrown during the HTTP lifecycle
	 *
	 * @method handle
	 *
	 * @param  {Object} error
	 * @param  {Object} options.request
	 * @param  {Object} options.response
	 *
	 * @return {void}
	 */
	async handle(error, { request, response }) {

		if (error.code === 'EBADCSRFTOKEN') {
			response.forbidden('Cannot process request because this page expired!')
			return
		}

		response.status(error.status).send(error.message)
	}


	/**
	 * Report exception for logging or debugging.
	 *
	 * @method report
	 *
	 * @param  {Object} error
	 * @param  {Object} options.request
	 *
	 * @return {void}
	 */
	async report(error, { request }) {


		let metaData = {
			headers: request.headers(),
			format: request.format(),
      body: request.hasBody() ? request.post() : {},
      query: request.get(),
			method: request.method().toLowerCase()
		};

		metaData[(metaData.method == "get" ? "querystring" : "entity_body")] = request.all()

		await bugsnag.notify(error, request, metaData)

	}


}

module.exports = ExceptionHandler

License

MIT

Running Tests

    npm i
    npm run lint

    npm run test

Credits

Contributing

See the CONTRIBUTING.md file for info