Cleanup REST api and use 'op' query param for verbs

This commit is contained in:
Tankred Hase
2016-06-14 12:10:53 +02:00
parent b29c8308a8
commit a60d8b86a9
6 changed files with 43 additions and 76 deletions

View File

@@ -50,6 +50,23 @@ class REST {
ctx.status = 201;
}
/**
* Public key query via http GET
* @param {Object} ctx The koa request/response context
*/
*query(ctx) {
let op = ctx.query.op;
if (this[op]) {
return yield this[op](ctx); // delegate operation
}
// do READ if no 'op' provided
let q = { keyId:ctx.query.keyId, fingerprint:ctx.query.fingerprint, email:ctx.query.email };
if (!util.isKeyId(q.keyId) && !util.isFingerPrint(q.fingerprint) && !util.isEmail(q.email)) {
ctx.throw(400, 'Invalid request!');
}
ctx.body = yield this._publicKey.get(q);
}
/**
* Verify a public key's user id via http GET
* @param {Object} ctx The koa request/response context
@@ -66,18 +83,6 @@ class REST {
ctx.set('Content-Type', 'text/html; charset=utf-8');
}
/**
* Public key fetch via http GET
* @param {Object} ctx The koa request/response context
*/
*read(ctx) {
let q = { keyId:ctx.query.keyId, fingerprint:ctx.query.fingerprint, email:ctx.query.email };
if (!util.isKeyId(q.keyId) && !util.isFingerPrint(q.fingerprint) && !util.isEmail(q.email)) {
ctx.throw(400, 'Invalid request!');
}
ctx.body = yield this._publicKey.get(q);
}
/**
* Request public key removal via http DELETE
* @param {Object} ctx The koa request/response context