+ hudozka-middlewares, + hudozka-api-v1

This commit is contained in:
tmshv committed 2016-03-26 21:53:20 +03:00
1 parent 6347e4db35
commit 35cc7c0caa
17 files changed
+175 -61

No files matched your search

+1
View File
@@ -0,0 +1 @@
node_modules/
+2
View File
@@ -0,0 +1,2 @@
.idea/
src/
@@ -0,0 +1,74 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.add = add;
var _koaRoute = require('koa-route');
var _koaCompose = require('koa-compose');
var _koaCompose2 = _interopRequireDefault(_koaCompose);
var _hudozkaMiddlewares = require('hudozka-middlewares');
var _hudozkaMiddlewares2 = _interopRequireDefault(_hudozkaMiddlewares);
var _koaQuery = require('koa-query');
var _koaQuery2 = _interopRequireDefault(_koaQuery);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
function add(auth, data) {
var _this = this;
return (0, _koaRoute.put)('/timeline', (0, _koaCompose2.default)([_hudozkaMiddlewares2.default.ensureServiceAuth(auth), _hudozkaMiddlewares2.default.ejson(), (0, _koaQuery2.default)({
save: (0, _koaQuery.toBoolean)()
}), function () {
var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(ctx) {
var doSave, post, result;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
doSave = ctx.request.query.save || true;
post = ctx.request.body;
_context.prev = 2;
if (!doSave) data.timeline.disableSaving();
_context.next = 6;
return data.timeline.add(post);
case 6:
result = _context.sent;
if (!doSave) data.timeline.enableSaving();
ctx.body = result;
_context.next = 15;
break;
case 11:
_context.prev = 11;
_context.t0 = _context['catch'](2);
ctx.status = 400;
ctx.body = _context.t0;
case 15:
case 'end':
return _context.stop();
}
}
}, _callee, _this, [[2, 11]]);
}));
return function (_x) {
return ref.apply(this, arguments);
};
}()]));
}
+19
View File
@@ -0,0 +1,19 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (auth, data) {
return (0, _koaCompose2.default)([(0, _timeline.add)(auth, data)]);
};
var _timeline = require('./api/timeline');
var _koaCompose = require('koa-compose');
var _koaCompose2 = _interopRequireDefault(_koaCompose);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
;
+26
View File
@@ -0,0 +1,26 @@
{
"name": "hudozka-api-v1",
"private": true,
"version": "0.0.1",
"description": "",
"main": "lib/index.js",
"scripts": {
"compile": "babel --presets es2015,stage-0 src/ -d lib/",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"ejson": "^2.1.2",
"hudozka-middlewares": "file:../hudozka-middlewares",
"koa-compose": "^3.1.0",
"koa-query": "0.0.2",
"koa-route": "^3.1.0",
"request-promise": "^2.0.1"
},
"devDependencies": {
"babel-cli": "^6.6.5",
"babel-preset-es2015": "^6.6.0",
"babel-preset-stage-0": "^6.5.0"
}
}
@@ -1,14 +1,13 @@
import {put} from 'koa-route';
import compose from 'koa-compose';
import {ensureServiceAuth} from '../middlewares/ensureServiceAuth';
import {ejson} from '../middlewares/ejson';
import hm from 'hudozka-middlewares';
import query from 'koa-query';
import {toBoolean} from 'koa-query';
export function add(auth, store) {
export function add(auth, data) {
return put('/timeline', compose([
ensureServiceAuth(),
ejson(),
hm.ensureServiceAuth(auth),
hm.ejson(),
query({
save: toBoolean()
}),
@@ -17,10 +16,10 @@ export function add(auth, store) {
let post = ctx.request.body;
try {
if(!doSave) store.timeline.disableSaving();
let result = await store.timeline.add(post);
if(!doSave) store.timeline.enableSaving();
if(!doSave) data.timeline.disableSaving();
let result = await data.timeline.add(post);
if(!doSave) data.timeline.enableSaving();
ctx.body = result;
} catch (e) {
ctx.status = 400;
+8
View File
@@ -0,0 +1,8 @@
import {add as timelineAdd} from './api/timeline';
import compose from 'koa-compose';
export default function (auth, data) {
return compose([
timelineAdd(auth, data)
]);
};
+3
View File
@@ -0,0 +1,3 @@
node_modules/
lib/
.idea/
+2
View File
@@ -0,0 +1,2 @@
src/
.idea/
+21
View File
@@ -0,0 +1,21 @@
{
"name": "hudozka-middlewares",
"private": true,
"version": "0.0.1",
"description": "",
"main": "lib/index.js",
"scripts": {
"compile": "babel --presets es2015,stage-0 src/ -d lib/",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"ejson": "^2.1.2"
},
"devDependencies": {
"babel-cli": "^6.6.5",
"babel-preset-es2015": "^6.6.0",
"babel-preset-stage-0": "^6.5.0"
}
}
@@ -1,11 +1,11 @@
import {parse} from 'ejson';
export function ejson() {
export function ejson(type='application/ejson') {
return async (ctx, next) => {
let type = ctx.request.headers['content-type'];
let t = ctx.request.headers['content-type'];
let data = ctx.request.body;
if (type === 'application/ejson'){
if (t === type){
data = typeof data === 'string' ? data : JSON.stringify(data);
ctx.request.body = parse(data);
}
@@ -1,11 +1,9 @@
import {checkAuth} from '../core/service';
export function ensureServiceAuth() {
export function ensureServiceAuth(auth) {
return async (ctx, next) => {
let service = ctx.request.headers['x-service-name'];
let token = ctx.request.headers['x-service-token'];
if (!checkAuth(service, token)) {
if (!auth(service, token)) {
ctx.status = 401;
} else {
await next();
+2
View File
@@ -0,0 +1,2 @@
export {ejson} from './ejson';
export {ensureServiceAuth} from './ensureServiceAuth';
+2
View File
@@ -24,7 +24,9 @@
"babel-preset-stage-0": "^6.5.0",
"co": "^4.4.0",
"ejson": "^2.1.2",
"hudozka-api-v1": "file:modules/hudozka-api-v1",
"hudozka-data": "file:modules/hudozka-data",
"hudozka-middlewares": "file:modules/hudozka-middlewares",
"instagram-node": "^0.5.1",
"koa": "^2.0.0-alpha.3",
"koa-bodyparser": "^3.0.0",
-8
View File
@@ -1,8 +0,0 @@
import {add as feedAdd} from './feed';
import compose from 'koa-compose';
export default function (auth, store) {
return compose([
feedAdd(auth, store)
]);
};
-35
View File
@@ -1,35 +0,0 @@
let contains = (list, i) => list.indexOf(i) > -1;
export function queryValue(params) {
let keys = Object.keys(params);
return async (ctx, next) => {
let query = ctx.request.query;
ctx.request.query = Object.keys(query)
.reduce((q, i) => {
if(contains(keys, i)){
let fn = params[i];
q[i] = fn(q[i]);
}
return q;
}, query);
await next();
};
}
export function booleanify(){
return function(value){
if(value == 'true') return true;
if(value == '1') return true;
if(value == 'false') return false;
if(value == '0') return false;
return Boolean(value);
}
}
export function arrayify(sep){
return function(value){
return value.split(sep);
}
}
+2 -2
View File
@@ -11,10 +11,10 @@ import helmet from 'koa-helmet';
import mount from 'koa-mount';
import bodyParser from 'koa-bodyparser';
import api_v1 from 'hudozka-api-v1';
import config from './config';
import {redirectionTable} from './config';
import {routes, queryObject} from './routes';
import api from './api';
import {redirect} from './routes/redirect';
import {checkAuth} from './core/service';
@@ -49,7 +49,7 @@ export default function(store){
}
function apis(store){
return mount('/api/v1', api(checkAuth, store));
return mount('/api/v1', api_v1(checkAuth, store));
}
function prerenderRmFragment(){