Skip to content
This repository has been archived by the owner on Jun 2, 2024. It is now read-only.

Commit

Permalink
support open search, fixed #60
Browse files Browse the repository at this point in the history
  • Loading branch information
dead-horse committed Dec 11, 2013
1 parent 7167989 commit c69d6a0
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 1 deletion.
31 changes: 31 additions & 0 deletions middleware/opensearch.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**!
* cnpmjs.org - middleware/opensearch.js
*
* Copyright(c) cnpmjs.org and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
*/

'use strict';

/**
* Module dependencies.
*/

var template = '<?xml version="1.0" encoding="UTF-8"?>\
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">\
<ShortName>CNPM</ShortName>\
<Description>Search packages in CNPM.</Description>\
<Tags>CNPM</Tags>\
<Url method="get" type="text/html" template="http://${host}/browse/keyword/{searchTerms}"/>\
</OpenSearchDescription>';

var lastModifyDate = new Date();

module.exports = function publishable(req, res, next) {
res.charset = res.charset || 'utf-8';
res.setHeader('Content-Type', 'text/xml');
res.send(template.replace('${host}', req.headers.host));
};
4 changes: 4 additions & 0 deletions servers/web.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,17 @@ 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();

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

app.use('/opensearch.xml', opensearch);

app.use(connect.cookieParser());
app.use(session);
app.use(connect.query());
Expand Down
37 changes: 37 additions & 0 deletions test/middleware/opensearch.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**!
* cnpmjs.org - test/middleware/opensearch.test.js
*
* Copyright(c) cnpmjs.org and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
*/

'use strict';

/**
* Module dependencies.
*/

var should = require('should');
var request = require('supertest');
var app = require('../../servers/web');

describe('middleware/opensearch.test.js', function () {
before(function (done) {
app.listen(0, done);
});
after(function (done) {
app.close(done);
});

describe('GET /opensearch.xml', function () {
it('should get 200', function (done) {
request(app)
.get('/opensearch.xml')
.set('host', 'localhost:7002')
.expect(/http:\/\/localhost:7002/, done);
});
});
});
2 changes: 1 addition & 1 deletion view/web/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<link href="http://cdn.staticfile.org/prettify/r298/prettify.min.css" rel="stylesheet" media="screen">
<!-- JavaScript plugins (requires jQuery) -->
<script src="http://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script>

<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="CNPM" />
<style>
a{color:#09f;}
code{color:#080;}
Expand Down

0 comments on commit c69d6a0

Please sign in to comment.