a b/index.js
1
'use strict';
2
3
var AwesomeModule = require('awesome-module');
4
var Dependency = AwesomeModule.AwesomeModuleDependency;
5
var path = require('path');
6
7
var myAwesomeModule = new AwesomeModule('esn.c2net', {
8
  dependencies: [
9
    new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.logger', 'logger'),
10
    new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.webserver.wrapper', 'webserver-wrapper'),
11
    new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.pubsub', 'pubsub'),
12
    new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.wsserver', 'wsserver')
13
  ],
14
15
  states: {
16
    lib: function(dependencies, callback) {
17
      var c2netlib = require('./backend/lib')(dependencies);
18
      var c2net = require('./backend/webserver/api/c2net')(dependencies);
19
20
      var lib = {
21
        api: {
22
          c2net: c2net
23
        },
24
        lib: c2netlib
25
      };
26
27
      return callback(null, lib);
28
    },
29
30
    deploy: function(dependencies, callback) {
31
      // Register the webapp
32
      var app = require('./backend/webserver')(dependencies, this);
33
      // Register every exposed endpoints
34
      app.use('/', this.api.c2net);
35
36
      var webserverWrapper = dependencies('webserver-wrapper');
37
      // Register every exposed frontend scripts
38
      var jsFiles = [
39
        'app.js',
40
        'c2net/services.js',
41
        'c2net/directives.js',
42
        'c2net/controllers.js'
43
      ];
44
      webserverWrapper.injectAngularModules('c2net', jsFiles, ['esn.c2net'], ['esn']);
45
      var lessFile = path.resolve(__dirname, './frontend/css/styles.less');
46
      webserverWrapper.injectLess('c2net', [lessFile], 'esn');
47
      webserverWrapper.addApp('c2net', app);
48
49
      return callback();
50
    },
51
52
    start: function(dependencies, callback) {
53
      require('./backend/ws/mobile').init(dependencies);
54
      // this.lib.start(callback);
55
      callback();
56
    }
57
  }
58
});
59
60
/**
61
 * The main AwesomeModule describing the application.
62
 * @type {AwesomeModule}
63
 */
64
module.exports = myAwesomeModule;