1 | const EventEmitter = require('events').EventEmitter ;
|
2 | const proto = require('./proto') ;
|
3 | const merge = require('utils-merge');
|
4 | const methods = require('sip-methods') ;
|
5 |
|
6 | exports = module.exports = createServer;
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | function createServer() {
|
16 | function app(req, res, next) {
|
17 | app.handle(req, res, next);
|
18 | }
|
19 | app.method = '*';
|
20 | merge(app, proto);
|
21 | merge(app, EventEmitter.prototype);
|
22 | app.stack = [];
|
23 | app.params = [];
|
24 | app._cachedEvents = [] ;
|
25 | app.routedMethods = {} ;
|
26 | app.locals = Object.create(null);
|
27 | for (var i = 0; i < arguments.length; ++i) {
|
28 | app.use(arguments[i]);
|
29 | }
|
30 |
|
31 |
|
32 | methods.forEach((method) => {
|
33 | app[method.toLowerCase()] = app.use.bind(app, method.toLowerCase()) ;
|
34 | }) ;
|
35 |
|
36 |
|
37 | app.on = function(event, listener) {
|
38 | if (0 === event.indexOf('cdr:')) {
|
39 | if (app.client) {
|
40 | app.client.on(event, function() {
|
41 | var args = Array.prototype.slice.call(arguments) ;
|
42 | EventEmitter.prototype.emit.apply(app, [event].concat(args)) ;
|
43 | }) ;
|
44 | }
|
45 | else {
|
46 | this._cachedEvents.push(event) ;
|
47 | }
|
48 | }
|
49 |
|
50 | return EventEmitter.prototype.addListener.call(app, event, listener) ;
|
51 | } ;
|
52 |
|
53 | return app;
|
54 | }
|
55 |
|
56 | createServer.Agent = require('./drachtio-agent');
|
57 | createServer.Request = require('./request') ;
|
58 | createServer.Response = require('./response') ;
|
59 | createServer.onSend = require('./on-send') ;
|