Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alexindigo/agnostic
A node library that allows other projects to be agnostic of particular http server implementation
https://github.com/alexindigo/agnostic
agnostic byos express hapi http library nodejs restify server web wrapper
Last synced: 10 days ago
JSON representation
A node library that allows other projects to be agnostic of particular http server implementation
- Host: GitHub
- URL: https://github.com/alexindigo/agnostic
- Owner: alexindigo
- License: mit
- Created: 2016-08-08T16:23:19.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-09-03T23:24:58.000Z (about 4 years ago)
- Last Synced: 2024-10-10T00:12:49.254Z (28 days ago)
- Topics: agnostic, byos, express, hapi, http, library, nodejs, restify, server, web, wrapper
- Language: JavaScript
- Homepage: https://www.npmjs.com/agnostic
- Size: 37.1 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# agnostic [![NPM Module](https://img.shields.io/npm/v/agnostic.svg?style=flat)](https://www.npmjs.com/package/agnostic)
A library that allows other projects to be agnostic of particular http server implementation.
[![Linux Build](https://img.shields.io/travis/alexindigo/agnostic/master.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/agnostic)
[![MacOS Build](https://img.shields.io/travis/alexindigo/agnostic/master.svg?label=macos:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/agnostic)
[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/agnostic/master.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/agnostic)[![Coverage Status](https://img.shields.io/coveralls/alexindigo/agnostic/master.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/agnostic?branch=master)
[![Dependency Status](https://img.shields.io/david/alexindigo/agnostic/master.svg?style=flat)](https://david-dm.org/alexindigo/agnostic)
[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/agnostic/badges/score.svg)](https://www.bithound.io/github/alexindigo/agnostic)*Notice of change of ownership: Starting version 1.0.0 this package has changed it's owner and goals. Old version (0.0.0) is still available on npm via `npm install [email protected]` or on [github](https://github.com/dtudury/agnostic). Thank you.*
| node / libs | express | restify | hapi | http |
| :-- | :-- | :-- | :-- | :-- |
| v0.12 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x | ✓ |
| io.js | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x | ✓ |
| v4 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x | ✓ |
| v5 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x | ✓ |
| v6 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x | ✓ |## Install
```
npm install --save agnostic
```## Example
### Your Library
```javascript
var agnostic = require('agnostic');module.exports = agnostic(myRequestHandler);
/**
* Does cool things
*
* @param {EventEmitter} request - request object, mimicking IncomingMessage
* @param {Function} respond - callback to respond to the request
*/
function myRequestHandler(request, respond)
{
// do cool things
// `request.body` - parsed request body
// `request.query` - parsed query string
// `respond` is a function with the following signature:
// `respond([code], [content[, options]]);`
respond(200, 'Received hit to ' + request.url, {headers: {'X-Powered-By': 'AllCoolThings'}});
}
```### Express [![express](https://img.shields.io/badge/express-3.x--4.x-brightgreen.svg?style=flat)](http://expressjs.com)
```javascript
var express = require('express');
var coolLib = require('above-cool-lib');var app = express();
app.all('/my-endpoint', coolLib);
// start the server
app.listen(1337);
```### Restify [![restify](https://img.shields.io/badge/restify-2.x--4.x-brightgreen.svg?style=flat)](http://restify.com)
```javascript
var restify = require('restify');
var coolLib = require('above-cool-lib');var server = restify.createServer();
server.get('/my-endpoint', coolLib);
server.post('/my-endpoint', coolLib);// start the server
server.listen(1337);
```### Hapi [![hapi](https://img.shields.io/badge/hapi-8.x--15.x-brightgreen.svg?lstyle=flat)](http://hapijs.com)
```javascript
var Hapi = require('hapi');
var coolLib = require('above-cool-lib');var server = new Hapi.Server();
// setup hapi server
server.connection({ port: 1337 });server.route({
method : ['GET', 'POST'], // Hapi uses GET handler for HEAD requests
path : '/my-endpoint',
handler: coolLib
});// start the server
server.start();```
### http [![http](https://img.shields.io/badge/http-0.12.x--6.x-brightgreen.svg?style=flat)](https://nodejs.org/api/http.html)
```javascript
var http = require('http');
var coolLib = require('above-cool-lib');server = http.createServer(coolLib);
// start the server
server.listen(1337);
```## Want to Know More?
More examples can be found in [test folder](test/).
Or open an [issue](https://github.com/alexindigo/agnostic/issues) with questions and/or suggestions.
## License
Agnostic is released under the [MIT](LICENSE) license.