Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
evheniy committed Oct 30, 2017
1 parent 0a3726a commit 8da961a
Show file tree
Hide file tree
Showing 9 changed files with 252 additions and 222 deletions.
10 changes: 10 additions & 0 deletions .editorconfig
@@ -0,0 +1,10 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true

charset = utf-8

indent_style = space
indent_size = 2
16 changes: 3 additions & 13 deletions .eslintrc
@@ -1,22 +1,12 @@
{
"extends": "eslint",
"extends": "airbnb-base",
"env": {
"es6": true,
"node": true,
"mocha": true
},
"parserOptions": {
"ecmaVersion": 8,
"sourceType": "module"
},
"rules": {
"indent": ["error", 4, {"SwitchCase": 1}],
"quotes": ["error", "single"],
"no-unused-expressions": 0,
"no-underscore-dangle": 0,
"func-style": [
"error",
"declaration", { "allowArrowFunctions": true }
]
"no-param-reassign": 0
}
}
}
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -3,4 +3,5 @@ coverage
npm-debug.log
node_modules
.DS_Store
logs/app.error.log
logs/app.error.log
package-lock.json
7 changes: 3 additions & 4 deletions .travis.yml
@@ -1,8 +1,7 @@
language: node_js
node_js:
- "7.6"
- "7.7"
- "7"
- "8"
script:
- npm run lint
- npm run test
- npm run report
- npm run report
58 changes: 25 additions & 33 deletions README.md
Expand Up @@ -22,53 +22,45 @@

## How to install

npm i -S yeps-method-override
npm i -S yeps-method-override

## How to use

### Header x-http-method-override or in body request

const App = require('yeps');
const app = new App();
const Router = require('yeps-router');

const error = require('yeps-error');
const logger = require('yeps-logger');
const server = require('yeps-server');

const bodyParser = require('yeps-bodyparser');
const methodOverride = require('yeps-method-override');

app.then(bodyParser());
app.then(methodOverride());
const app = new App();
const router = new Router();

app.then(async ctx => {
app.all([
error(),
logger(),
bodyParser(),
methodOverride(),
]);

app.then(async (ctx) => {
ctx.res.statusCode = 200;
ctx.res.end(JSON.stringify(ctx.req.method));

});

### Express body parser

const wrapper = require('yeps-express-wrapper');
const expressBodyParser = require('body-parser');

app.then(wrapper(expressBodyParser.json()));
app.then(methodOverride());

app.then(async ctx => {
ctx.res.statusCode = 200;
ctx.res.end(JSON.stringify(ctx.req.method));
router.get('/').then(async (ctx) => {
ctx.res.statusCode = 200;
ctx.res.end('homepage');
});
## Links
app.then(router.resolve());
server.createHttpServer(app);


* [yeps](https://github.com/evheniy/yeps) - YEPS
* [yeps-promisify](https://github.com/evheniy/yeps-promisify) - YEPS kernel
* [yeps-benchmark](https://github.com/evheniy/yeps-benchmark) - performance comparison koa2, express and node http
* [yeps-router](https://github.com/evheniy/yeps-router) - YEPS promise based router
* [yeps-error](https://github.com/evheniy/yeps-error) - YEPS 404/500 error handler
* [yeps-redis](https://github.com/evheniy/yeps-redis) - YEPS promise based redis client
* [yeps-mysql](https://github.com/evheniy/yeps-mysql) - YEPS promise based mysql client
* [yeps-boilerplate](https://github.com/evheniy/yeps-boilerplate) - YEPS app boilerplate
* [yeps-express-wrapper](https://github.com/evheniy/yeps-express-wrapper) - YEPS express wrapper
* [yeps-cors](https://github.com/evheniy/yeps-cors) - YEPS CORS
* [yeps-bodyparser](https://github.com/evheniy/yeps-bodyparser) - YEPS body parser
#### [YEPS documentation](http://yeps.info/)
6 changes: 3 additions & 3 deletions appveyor.yml
@@ -1,13 +1,13 @@
environment:
matrix:
- nodejs_version: "7.7"
- nodejs_version: "8"
install:
- ps: Install-Product node $env:nodejs_version
- npm install
test_script:
- node --version
- npm --version
- npm run lint
- npm run test:lint
- npm run test:security
- npm run test:code
build: off
build: off
73 changes: 36 additions & 37 deletions index.js
Expand Up @@ -4,41 +4,40 @@ const methods = require('methods');

const methodExists = method => methods.includes(method.toLowerCase());

module.exports = () => async context => {

debug('Method override');

let method = context.req.method;

debug('Original method: %s', method);

// wrapper
if (
context.req.body
&& context.req.body._method
&& methodExists(context.req.body._method)
) {
method = context.req.body._method.toUpperCase();
}

// body parser
if (
context.request
&& context.request.body
&& context.request.body._method
&& methodExists(context.request.body._method)
) {
method = context.request.body._method.toUpperCase();
}

// header support
const header = context.req.headers['x-http-method-override'];

if (header && methodExists(header)) {
method = header.toUpperCase();
}

context.req.method = method;

debug('New method: %s', method);
module.exports = () => async (context) => {
debug('Method override');

let { method } = context.req;

debug('Original method: %s', method);

// wrapper
if (
context.req.body
&& context.req.body._method
&& methodExists(context.req.body._method)
) {
method = context.req.body._method.toUpperCase();
}

// body parser
if (
context.request
&& context.request.body
&& context.request.body._method
&& methodExists(context.request.body._method)
) {
method = context.request.body._method.toUpperCase();
}

// header support
const header = context.req.headers['x-http-method-override'];

if (header && methodExists(header)) {
method = header.toUpperCase();
}

context.req.method = method;

debug('New method: %s', method);
};
53 changes: 27 additions & 26 deletions package.json
@@ -1,17 +1,16 @@
{
"name": "yeps-method-override",
"version": "1.0.1",
"version": "1.0.2",
"description": "YEPS Method Override",
"main": "index.js",
"scripts": {
"lint": "./node_modules/.bin/npm-run-all --parallel lint:**",
"lint:js": "./node_modules/.bin/eslint index.js tests",
"test": "./node_modules/.bin/npm-run-all --parallel test:**",
"test:security": "./node_modules/.bin/nsp check",
"test:code": "node ./node_modules/mocha/bin/_mocha tests --recursive",
"test:coverage": "./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- tests --recursive",
"report": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls",
"clear": "./node_modules/.bin/rimraf coverage",
"test": "npm-run-all test:**",
"test:lint": "eslint index.js tests",
"test:security": "nsp check",
"test:code": "mocha tests --recursive",
"test:coverage": "istanbul cover _mocha -- tests --recursive",
"report": "cat ./coverage/lcov.info | coveralls",
"clear": "rimraf coverage",
"precommit": "npm run lint && npm test",
"prepush": "npm run lint && npm test"
},
Expand Down Expand Up @@ -50,26 +49,28 @@
"node": ">=7.6.0"
},
"devDependencies": {
"body-parser": "^1.17.1",
"chai": "^3.5.0",
"body-parser": "^1.18.2",
"chai": "^4.1.2",
"chai-http": "^3.0.0",
"coveralls": "^2.11.16",
"debug": "^2.6.1",
"eslint": "^3.15.0",
"eslint-config-eslint": "^3.0.0",
"husky": "^0.13.1",
"coveralls": "^3.0.0",
"eslint": "^4.10.0",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-plugin-import": "^2.8.0",
"husky": "^0.14.3",
"istanbul": "^1.1.0-alpha.1",
"mocha": "^3.2.0",
"mocha-lcov-reporter": "^1.2.0",
"npm-run-all": "^4.0.1",
"nsp": "^2.6.2",
"promise-pause-timeout": "^1.0.0",
"rimraf": "^2.5.4",
"sinon": "^1.17.7"
"mocha": "^4.0.1",
"mocha-lcov-reporter": "^1.3.0",
"npm-run-all": "^4.1.1",
"nsp": "^3.0.0",
"rimraf": "^2.6.2",
"yeps": "^1.0.1",
"yeps-bodyparser": "^1.1.1",
"yeps-express-wrapper": "^1.0.1",
"yeps-router": "^1.1.2",
"yeps-server": "^1.1.0"
},
"dependencies": {
"yeps": "^1.0.0",
"yeps-bodyparser": "^1.0.0",
"yeps-express-wrapper": "^1.0.0"
"debug": "^3.1.0",
"methods": "^1.1.2"
}
}

0 comments on commit 8da961a

Please sign in to comment.