all files / lib/providers/socket/ primus.js

95.83% Statements 23/24
50% Branches 2/4
100% Functions 6/6
95.83% Lines 23/24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                                            33×     44×                
'use strict';
 
var Proto = require('uberproto');
var Primus = require('primus');
var Emitter = require('primus-emitter');
var debug = require('debug')('feathers:primus');
var commons = require('feathers-commons').socket;
 
module.exports = function(config, configurer) {
  return function() {
    var app = this;
 
    app.enable('feathers primus');
 
    // Monkey patch app.setup(server)
    Proto.mixin({
      service: commons.service,
 
      setup: function(server) {
        Iif (this.disabled('feathers primus')) {
          return this._super.apply(this, arguments);
        }
 
        debug('Setting up Primus');
 
        var primus = this.primus = new Primus(server, config);
 
        primus.use('emitter', Emitter);
 
        Eif (typeof configurer === 'function') {
          debug('Calling Primus configuration function');
          configurer.call(this, primus);
        }
 
        var result = this._super.apply(this, arguments);
 
        commons.setup.call(this, {
          method: 'send',
          connection: function() {
            return primus;
          },
          clients: function() {
            return primus;
          },
          params: function(spark) {
            return spark.request.feathers;
          }
        });
 
        return result;
      }
    }, app);
  };
};