+ hudozka-middlewares, + hudozka-api-v1
This commit is contained in:
1 parent
6347e4db35
commit
35cc7c0caa
17 files changed
+175
-61
No files matched your search
@@ -0,0 +1 @@
|
||||
node_modules/
|
||||
@@ -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);
|
||||
};
|
||||
}()]));
|
||||
}
|
||||
@@ -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 }; }
|
||||
|
||||
;
|
||||
@@ -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;
|
||||
@@ -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)
|
||||
]);
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
node_modules/
|
||||
lib/
|
||||
.idea/
|
||||
@@ -0,0 +1,2 @@
|
||||
src/
|
||||
.idea/
|
||||
@@ -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);
|
||||
}
|
||||
+2
-4
@@ -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();
|
||||
@@ -0,0 +1,2 @@
|
||||
export {ejson} from './ejson';
|
||||
export {ensureServiceAuth} from './ensureServiceAuth';
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
]);
|
||||
};
|
||||
@@ -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
@@ -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(){
|
||||
|
||||
Reference in new issue
Block a user