regard
Version:
Sugar-interface to access multiple data sources.
124 lines (92 loc) • 3.33 kB
Markdown
# Regard
[![build status][travis-svg]][travis-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![license][license-image]][license-url]
[![npm badge][npm-badge-png]][npm-url]
Sugar-interface to access multiple data sources.
## Example
In the example below, we will:
1. Create a new instance of _Regard_ ;
2. Load two connectors (_FsConnector_ and _HttpConnector_) ;
3. Create two major endpoints (`root` which give access to the current folder and `mb` which give access to the [Mockbin API](http://mockbin.com/docs));
4. Execute a request to http://mockbin.com/request, write the result into `sample.json`, read it and print the content on the standard output.
```javascript
var Regard = require('regard');
// #1 Create a new instance of Regard
var regard = Regard();
// #2 Load two connectors
regard
.$$(Regard.FsConnector)
.$$(Regard.HttpConnector);
// #3 Create two major endpoints
regard
.$('mb', 'http://mockbin.com')
.$('root', __dirname);
// #4 Execute a request to http://mockbin.com/request
regard('mb', 'request')
.then(function (res) {
// write the result into __dirname/sample.json
return regard.root('write', 'sample.json', res.body);
})
.then(function () {
// read it
return regard.root('read', 'sample.json');
})
.then(function (res) {
// and print it
console.log(res);
});
```
We can rewrite this example with less code lines:
1. Create an instance of _Regard_ initialized with _FsConnector_ and _HttpConnector_ ;
2. Create two major endpoints and two nested endpoints (one under the `mb` endpoint and an other under the `root` endpoint);
3. Execute a request, write the result into `sample.json` and print it.
```javascript
var Regard = require('regard');
// #1 Create an instance of Regard initialized with two connectors
var regard = Regard('fs', 'http');
// #2 Create two major endpoints and one nested endpoint under each of them
regard
.$('mb', 'http://mockbin.com')
.$('root', __dirname)
.mb.$('request', 'request')
.root.$('sample', 'sample.json');
// #3 Execute a request, write and print the result
regard.mb.request()
.then(function (res) {
return regard.root.sample('write', res.body);
})
.then(console.log);
```
The two example above have the same result: the request's response is wrote into `sample.json`.
```bash
$ cat sample.json
{
startedDateTime: '2015-09-23T07:04:52.797Z',
clientIPAddress: '79.87.208.107',
method: 'GET',
url: 'http://mockbin.com/request',
httpVersion: 'HTTP/1.1',
// ...
}
```
## Tests
```
npm test
```
## Credits
* [Steven Enten](https://github.com/enten)
## License
[MIT][license-url]
[npm-url]: https://npmjs.org/package/regard
[npm-version-svg]: http://vb.teelaun.ch/enten/regard.svg
[travis-svg]: https://travis-ci.org/enten/regard.svg?branch=master
[travis-url]: https://travis-ci.org/enten/regard
[deps-svg]: https://david-dm.org/enten/regard.svg
[deps-url]: https://david-dm.org/enten/regard
[dev-deps-svg]: https://david-dm.org/enten/regard/dev-status.svg
[dev-deps-url]: https://david-dm.org/enten/regard#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/regard.png
[license-image]: http://img.shields.io/npm/l/regard.svg
[license-url]: https://raw.githubusercontent.com/enten/regard/master/LICENSE