Skip to content

Commit

Permalink
Merge pull request #42 from SylvainEstevez/add-event-emitter
Browse files Browse the repository at this point in the history
Add event emitter
  • Loading branch information
Danosaurus committed Mar 27, 2017
2 parents fd09da5 + 0ef5df3 commit 4d87c03
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 1 deletion.
7 changes: 7 additions & 0 deletions src/event-emitter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
'use strict';

const EventEmitter = require('events');

const restypieEventEmitter = new EventEmitter();

module.exports = restypieEventEmitter;
8 changes: 7 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ const Restypie = module.exports = {

RESERVED_WORDS: ['limit', 'offset', 'sort', 'select', 'format', 'populate', 'options'],

EventTypes: {
ERROR: 'error',
WARN: 'warn'
},

isSupportedRouterType(type) {
return _.contains(_.values(Restypie.RouterTypes), type);
},
Expand Down Expand Up @@ -291,6 +296,7 @@ const Restypie = module.exports = {
get Query() { return require('./client/lib/query'); },
get Logger() { return require('./logger'); },
get QueryScore() { return require('./query-score'); },
get ResourceTester() { return require('./resource-tester'); }
get ResourceTester() { return require('./resource-tester'); },
get EventEmitter() { return require('./event-emitter'); }

};
4 changes: 4 additions & 0 deletions src/resources/lib/abstract-resource.js
Original file line number Diff line number Diff line change
Expand Up @@ -1267,14 +1267,18 @@ module.exports = class AbstractResource extends Restypie.Resources.AbstractCoreR
switch (true) {
case !statusCode:
Restypie.Logger.error('No statusCode for request on ' + bundle.req.url);
Restypie.EventEmitter.emit(Restypie.EventTypes.ERROR,
new Error('No statusCode for request on ' + bundle.req.url));
break;
case statusCode === Restypie.Codes.InternalServerError:
debugError(bundle.err.stack);
Restypie.Logger.error(bundle.err.stack, bundle.err);
Restypie.EventEmitter.emit(Restypie.EventTypes.ERROR, bundle.err);
break;
case statusCode >= Restypie.Codes.BadRequest:
debugWarn(bundle.err.stack);
Restypie.Logger.warn(bundle.err.stack, bundle.err);
Restypie.EventEmitter.emit(Restypie.EventTypes.WARN, bundle.err);
break;
}

Expand Down
16 changes: 16 additions & 0 deletions test/event-emitter.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
'use strict';

describe('Restypie.EventEmitter', function () {

describe('.emit()', function () {
it('should emit error event', function () {
let err = null;
Restypie.EventEmitter.on(Restypie.EventTypes.ERROR, function (error) {
err = error;
});
Restypie.EventEmitter.emit(Restypie.EventTypes.ERROR, new Error('message'));
err.message.should.equal('message');
});
});

});

0 comments on commit 4d87c03

Please sign in to comment.