Moved the list from the request method call to it's constructor.

This commit is contained in:
Sergio Díaz 2017-03-01 13:44:52 -06:00
parent b033031a43
commit c4adfeaf75
3 changed files with 18 additions and 11 deletions

View File

@ -2,7 +2,7 @@ VERSION: '1'
HOST: https://slack.com/api
auth: &auth
token: xoxp-139455775026-139455775090-140860933030-239230833dba65fc90078876ae85d9fb
token: xoxp-139455775026-139455775090-140286212801-4a786b8b600db898df76302a0bf0784c
GET /users.getPresence:
ALIAS: $presence

View File

@ -4,7 +4,7 @@ const RequestList = require('./requestList');
const RequestCache = require('./requestCache');
class Request {
constructor(req) {
constructor(req, list) {
let { request, ALIAS, PAYLOAD, HOST, PARAMS, HEADERS } = req;
let { verb, endpoint } = this.parseRequest(request);
@ -17,6 +17,8 @@ class Request {
this.$alias = ALIAS;
this.$dependencies = this.findDependencies(req);
this.list = list;
}
parseRequest(request) {
@ -46,10 +48,10 @@ class Request {
return set;
}
exec(list = new RequestList(), cache = new RequestCache()) {
let dependencies = Array.from(this.$dependencies).map(dep => list.execByAlias(dep));
exec() {
let dependencies = Array.from(this.$dependencies);
return Promise.all(dependencies).then(() => {
return this.list.fetchDependencies(dependencies).then(cache => {
let endpoint = cache.parse(this.$endpoint);
let request = unirest(this.$verb, endpoint);

View File

@ -1,6 +1,7 @@
const Request = require('./request');
const RequestCache = require('./requestCache');
const httpVerbs = require('./shared').httpVerbs;
class RequestList {
constructor(doc = {}, config = {}) {
this.config = config;
@ -16,15 +17,19 @@ class RequestList {
}
return request
.exec(this, this.cache)
.exec()
.catch(reason => {
return Promise.reject(`${request.$verb} ${request.$endpoint} FAILED.
Dependencies not met:
${reason}
`);
return Promise
.reject(`${request.$verb} ${request.$endpoint} FAILED. \nDependencies not met:\n${reason}`);
});
}
fetchDependencies(dependencies) {
dependencies = dependencies.map(d => this.execByAlias(d));
return Promise.all(dependencies).then(() => this.cache);
}
loadRequests(doc) {
let requestKeys = Object.keys(doc)
.filter(key => {
@ -38,7 +43,7 @@ ${reason}
doc[key].HOST = this.config.HOST;
doc[key].request = key;
return new Request(doc[key]);
return new Request(doc[key], this);
});
}
}