Skip to content
Snippets Groups Projects
Select Git revision
  • 9fba1d10101460cc6f2577f774974d314877654f
  • master default
2 results

main.test.js

Blame
  • nodecoin.js 3.93 KiB
    var pks    = require('./pks'),
    amend      = require('./amendments'),
    express    = require('express'),
    orm        = require('orm'),
    async      = require('async'),
    config     = require('../config'),
    path       = require('path'),
    _          = require('underscore'),
    nodecoin   = require('../lib/nodecoin');
    configurer = require('../lib/configurer');
    
    module.exports.pks = pks;
    module.exports.amendments = amend;
    module.exports.express = {
    
      route: function(app){
    
        function notImplemented (req, res) {
          res.writeHead(501);
          res.end();
        }
    
        app.get(    '/pks/lookup',                                  pks.lookup);
        app.get(    '/pks/add',                                     pks.add.get);
        app.post(   '/pks/add',                                     pks.add.post);
        app.get(    '/udc/amendments/init',                         _(amend.init).partial(app.get('config').initKeys));
        app.post(   '/udc/amendments/submit',                       notImplemented);
        app.post(   '/udc/amendments/vote',                         notImplemented);
        app.get(    '/udc/amendments/view/:amendment_id/members',   notImplemented);
        app.get(    '/udc/amendments/view/:amendment_id/self',      notImplemented);
        app.get(    '/udc/amendments/view/:amendment_id/voters',    notImplemented);
        app.get(    '/udc/coins/:pgp_fpr/list',                     notImplemented);
        app.get(    '/udc/coins/:pgp_fpr/view/:coin_number',        notImplemented);
        app.post(   '/udc/community/declare',                       notImplemented);
        app.post(   '/udc/community/join',                          notImplemented);
        app.get(    '/udc/transactions/sender/:fingerprint',        notImplemented);
        app.post(   '/udc/transactions/process/issuance',           notImplemented);
        app.post(   '/udc/transactions/process/transfert',          notImplemented);
        app.get(    '/udc/transactions/view/:transaction_id',       notImplemented);
      },
    
      app: function (someConfig) {
        var app = express();
        var config = someConfig || {
          server: { port: 8001 },
          db: {
            database : "nodecoin_test",
            protocol : "sqlite",
            dropAll: false
          }
        };
    
        configurer(config).parseFiles(function (err) {
          if(!err){
            console.log("Initkeys loaded.");
          }
          else{
            console.log(err);
          }
        });
    
        // all environments
        app.set('config', config);
        app.set('port', process.env.PORT || config.server.port);
        app.use(express.favicon(__dirname + '/../public/favicon.ico'));
        app.use(express.static(__dirname + '/../public'));
        app.use(express.logger('dev'));
        app.use(express.bodyParser());
        app.use(express.methodOverride());
        app.use(express.cookieParser('your secret here'));
        app.use(express.session());
        app.use(orm.express(config.db, {
          define: function (db, models) {
    
            db.load(__dirname + '/entities/load', function (err) {
              // loaded !
              var PublicKey = db.models.pubkey;
              var PrivateKey = db.models.privkey;
    
              function createTables(callback){
                PublicKey.sync(function (err2) {
                  if(!err)
                    console.log("Table 'PublicKey' created.");
                  callback(err);
                });
              }
    
              function dropTables(callback){
                PublicKey.drop(function (err2) {
                  if(!err)
                    console.log("Table 'PublicKey' dropped.");
                  callback(err);
                });
              }
    
              if(config.db.dropAll){
                dropTables(function (err2) {
                  createTables(function (err3) {});
                });
              }
              else{
                createTables(function (err2) {});
              }
    
              models.PublicKey = PublicKey;
              models.PrivateKey = PrivateKey;
            });
          }
        }));
        app.use(app.router);
    
        // development only
        if ('development' == app.get('env')) {
          app.use(express.errorHandler());
        }
    
        this.route(app);
        return app;
      }
    };