Skip to content

Commit

Permalink
change web connect to koa
Browse files Browse the repository at this point in the history
  • Loading branch information
dead-horse authored and fengmk2 committed Feb 27, 2014
1 parent 5e1ab43 commit fb74417
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 66 deletions.
9 changes: 6 additions & 3 deletions middleware/opensearch.js
Expand Up @@ -25,7 +25,10 @@ var template = '<?xml version="1.0" encoding="UTF-8"?>\
var lastModifyDate = new Date();

module.exports = function *publishable(next) {
this.type = 'text/xml';
this.charset = 'utf-8';
this.body = template.replace('${host}', this.host);
if (this.path === '/opensearch.xml') {
this.type = 'text/xml';
this.charset = 'utf-8';
this.body = template.replace('${host}', this.host);
}
yield next;
};
2 changes: 1 addition & 1 deletion middleware/registry_not_found.js
@@ -1,5 +1,5 @@
/**!
* cnpmjs.org - middleware/publishable.js
* cnpmjs.org - middleware/registry_not_found.js
*
* Copyright(c) cnpmjs.org and other contributors.
* MIT Licensed
Expand Down
27 changes: 27 additions & 0 deletions middleware/web_not_found.js
@@ -0,0 +1,27 @@
/**!
* cnpmjs.org - middleware/web_not_found.js
*
* Copyright(c) cnpmjs.org and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
*/

'use strict';

/**
* Module dependencies.
*/

module.exports = function *notFound(next) {
yield next;

if (this.status) {
return;
}
this.status = 404;
this.type = 'text/html';
this.charset = 'utf-8';
this.body = 'Cannot GET ' + this.path;
};
11 changes: 4 additions & 7 deletions package.json
Expand Up @@ -20,10 +20,6 @@
"dependencies": {
"co-read": "0.0.1",
"co-write": "0.3.0",
"connect": "2.13.0",
"connect-markdown": "0.0.3",
"connect-render": "0.3.2",
"connect-rt": "0.0.2",
"debug": "0.7.4",
"eventproxy": "0.2.6",
"forward": "0.0.4",
Expand All @@ -33,12 +29,15 @@
"humanize-number": "0.0.2",
"koa": "0.5.0",
"koa-bodyparser": "0.0.1",
"koa-ejs": "0.0.0",
"koa-jsonp": "0.0.3",
"koa-markdown": "0.0.2",
"koa-redis": "0.0.5",
"koa-rewrite": "1.1.0",
"koa-router": "3.0.2",
"koa-rt": "0.0.2",
"koa-sess": "0.0.8",
"koa-static-cache": "1.0.4",
"logfilestream": "0.1.0",
"marked": "0.3.1",
"microtime": "0.5.1",
Expand All @@ -50,11 +49,9 @@
"nodemailer": "0.6.0",
"qn": "0.2.0",
"ready": "0.1.1",
"response-patch": "0.1.1",
"semver": "2.2.1",
"thunkify-wrap": "0.0.1",
"urllib": "0.5.5",
"urlrouter": "0.5.4",
"utility": "0.1.10"
},
"devDependencies": {
Expand All @@ -66,7 +63,7 @@
"mocha": "*",
"mocha-lcov-reporter": "*",
"pedding": "0.0.3",
"should": "3.1.2",
"should": "3.1.3",
"supertest": "0.9.0",
"travis-cov": "*"
},
Expand Down
20 changes: 10 additions & 10 deletions routes/web.js
Expand Up @@ -21,19 +21,19 @@ var sync = require('../controllers/sync');
var total = require('../controllers/total');

function routes(app) {
app.get('/total', total.show);
app.get('/package/:name', pkg.display);
app.get('/package/:name/:version', pkg.display);
app.get('/browse/keyword/:word', pkg.search);
// app.get('/total', total.show);
// app.get('/package/:name', pkg.display);
// app.get('/package/:name/:version', pkg.display);
// app.get('/browse/keyword/:word', pkg.search);

app.get('/~:name', user.display);
// app.get('/~:name', user.display);

app.get('/sync/:name', pkg.displaySync);
app.put('/sync/:name', sync.sync);
app.get('/sync/:name/log/:id', sync.getSyncLog);
app.get('/sync', pkg.displaySync);
// app.get('/sync/:name', pkg.displaySync);
// app.put('/sync/:name', sync.sync);
// app.get('/sync/:name/log/:id', sync.getSyncLog);
// app.get('/sync', pkg.displaySync);

app.get('/_list/search/search', pkg.rangeSearch);
// app.get('/_list/search/search', pkg.rangeSearch);
}

module.exports = routes;
7 changes: 1 addition & 6 deletions servers/registry.js
Expand Up @@ -36,13 +36,8 @@ app.use(rt({headerName: 'X-ReadTime'}));

app.use(rewrite('/favicon.ico', '/public/favicon.ico'));

// app.use(responseCookie());
// app.use(connect.cookieParser());
// app.use(connect.query());
// app.use(connect.json());

app.keys = ['todokey', config.sessionSecret];
app.outputError = true;
app.outputErrors = true;
app.use(session);
app.use(bodyParser());
app.use(auth());
Expand Down
78 changes: 39 additions & 39 deletions servers/web.js
Expand Up @@ -15,37 +15,39 @@
* Module dependencies.
*/

require('response-patch');
var path = require('path');
var http = require('http');
var fs = require('fs');
var connect = require('connect');
var rt = require('connect-rt');
var urlrouter = require('urlrouter');
var connectMarkdown = require('connect-markdown');
var koa = require('koa');
var rt = require('koa-rt');
var bodyParser = require('koa-bodyparser');
var markdown = require('koa-markdown');
var staticCache = require('koa-static-cache');
var render = require('koa-ejs');
var router = require('koa-router');
var session = require('../common/session');
var opensearch = require('../middleware/opensearch');
var notFound = require('../middleware/web_not_found');
var routes = require('../routes/web');
var logger = require('../common/logger');
var config = require('../config');
var session = require('../common/session');
var render = require('connect-render');
var opensearch = require('../middleware/opensearch');
var app = connect();

var app = koa();

var rootdir = path.dirname(__dirname);

app.use(rt({headerName: 'X-ReadTime'}));
app.use(function (req, res, next) {
res.req = req;
next();
});

app.use('/public', connect.static(path.join(rootdir, 'public')));
app.use('/opensearch.xml', opensearch);

app.use(connect.cookieParser());
app.use(staticCache(path.join(__dirname, '..', 'public'), {
buffer: !config.debug,
maxAge: config.debug ? 0 : 60 * 60 * 24 * 7,
dir: path.join(rootdir, 'public')
}));
app.use(opensearch);
app.keys = ['todokey', config.sessionSecret];
app.outputErrors = true;
app.use(session);
app.use(connect.query());
app.use(connect.json());
app.use(bodyParser());
app.use(notFound);

var viewDir = path.join(rootdir, 'view', 'web');
var docDir = path.join(rootdir, 'docs', 'web');
Expand All @@ -57,49 +59,47 @@ var layout = fs.readFileSync(path.join(viewDir, 'layout.html'), 'utf8')
.replace('{{logoURL}}', config.logoURL);
fs.writeFileSync(layoutFile, layout);

app.use('/', connectMarkdown({
app.use(markdown({
baseUrl: '/',
root: docDir,
layout: layoutFile,
titleHolder: '<%- locals.title %>',
bodyHolder: '<%- locals.body %>',
indexName: 'readme'
}));

var helpers = {
var locals = {
config: config
};

app.use(render({
render(app, {
root: viewDir,
viewExt: '.html',
viewExt: 'html',
layout: '_layout',
cache: config.viewCache,
helpers: helpers
}));
debug: config.debug,
locals: locals
});

/**
* Routes
*/

app.use(urlrouter(routes));
app.use(router(app));
routes(app);

/**
* Error handler
*/

app.use(function (err, req, res, next) {
err.url = err.url || req.url;
app.on('error', function (err, ctx) {
err.url = err.url || ctx.request.url;
logger.error(err);
if (process.env.NODE_ENV !== 'test') {
console.error(err.stack);
}
if (config.debug) {
return next(err);
}
res.statusCode = 500;
res.send('Server has some problems. :(');
});

app = http.createServer(app);
app = http.createServer(app.callback());

if (!module.parent) {
app.listen(config.webPort);
}

module.exports = app;

0 comments on commit fb74417

Please sign in to comment.