Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/johnhof/fleek
unifying library for the fleek framework
https://github.com/johnhof/fleek
Last synced: 20 days ago
JSON representation
unifying library for the fleek framework
- Host: GitHub
- URL: https://github.com/johnhof/fleek
- Owner: johnhof
- License: mit
- Created: 2016-03-22T21:20:56.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-01-17T21:53:47.000Z (almost 8 years ago)
- Last Synced: 2024-10-05T01:41:14.120Z (about 1 month ago)
- Language: JavaScript
- Size: 28.3 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fleek
[![Build Status](https://travis-ci.org/fleekjs/fleek.svg?branch=master)](https://travis-ci.org/fleekjs/fleek)
Unifying library for the fleek framework. Uses [koa2](https://github.com/koajs/koa/tree/v2.x) as a base to leverage swagger documentation and rapidly build documentation driven code.
Requirements:
- Node >= 6.0.0# Usage
```
npm install --save fleek
```This package is to be used as middleware for [Koa2](https://github.com/koajs/koa/tree/v2.x) to aggregate functionality from the various fleek components:
- [fleek-parser](https://github.com/fleekjs/fleek-parser) - parses swagger doc into a more expressive unified object
- [fleek-context](https://github.com/fleekjs/fleek-context) - takes koa requests and binds the appropriate swagger path data using [routington](https://www.npmjs.com/package/routington)
- [fleek-validator](https://github.com/fleekjs/fleek-validator) - uses the fleek/swagger context to validate incoming requests
- [fleek-router](https://github.com/fleekjs/fleek-router) - uses fleek/swagger context to route to provided controllers/operations# Examples
For a swagger example, refer to the test [swagger json](https://github.com/fleekjs/fleek-router/blob/master/tests/swagger.json)
```javascript
const Koa = require('koa');
const fleek = require('fleek');const SWAGGER = require('./swagger.json');
let app = new Koa();
// Parse the request and bind `context.fleek.context` to the appropriate path+method config using the provided swagger
app.use(fleek.context(SWAGGER));// Validate the request using the fleek context
app.use(fleek.validator().catch((ctx, next) => {
ctx.body = ctx.fleek.validation; // return the specific failures to the client
ctx.status = 400;
return Promise.resolve();
}));// If `ctx.fleek.context.tags` contains the tag `authenticated`, athenticate the request
app.use(fleek.router.tag('authenticated', (ctx, next) => {
if (someAuthFunction(ctx)) {
ctx.body = 'Not authorized';
ctx.status = 401;
return Promise.resolve();
} else return next();
}))// Route to controllers using `ctx.fleek.constext.tag[]` which export CRUD methods, and any specially named exported function using operationId
app.use(router.controllers(`${__driname}/controllers`));
// controllers/
// ├── bar.js [exports: get(ctx, next)]
// ├── foo
// | └── biz.js [exports: post(ctx, next)]
// └── */** [exports: createBar(ctx, next)]app.listen(3000);
```## Authors
- [John Hofrichter](https://github.com/johnhof)
_Built and maintained with [](http://hart.com/) by the [Hart](http://hart.com/) team._