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 HOST: https://slack.com/api
auth: &auth auth: &auth
token: xoxp-139455775026-139455775090-140860933030-239230833dba65fc90078876ae85d9fb token: xoxp-139455775026-139455775090-140286212801-4a786b8b600db898df76302a0bf0784c
GET /users.getPresence: GET /users.getPresence:
ALIAS: $presence ALIAS: $presence

View File

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

View File

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