Modifiers can now edit request settings.

This gives a lot more flexibility when it comes to what a modifier can
do. They can now use any valid request option to change how the response
behaves.
This commit is contained in:
David Diaz 2018-04-20 18:23:04 -06:00
parent f13cbda84a
commit d15564a9e3
2 changed files with 12 additions and 20 deletions

View File

@ -5,6 +5,7 @@ class Modifiers {
} }
preRequest(request, orig) { preRequest(request, orig) {
request.headers = request.headers || {};
request.headers.preRequestModifier = true; request.headers.preRequestModifier = true;
return request; return request;
} }

View File

@ -77,13 +77,20 @@ class Request {
async exec(cache = new RequestCache()) { async exec(cache = new RequestCache()) {
let settings = cache.parse({ let settings = cache.parse({
endpoint: this.ENDPOINT, url: this.ENDPOINT,
method: this.VERB, method: this.VERB,
headers: this.HEADERS, headers: this.HEADERS,
query: this.PARAMS, qs: this.PARAMS,
payload: this.PAYLOAD body: this.PAYLOAD,
json: true,
simple: false,
resolveWithFullResponse: true
}); });
settings = removeOptionalKeys(settings, ['headers', 'qs', 'body']);
settings = this.plugins.replaceDynamicValues(settings); settings = this.plugins.replaceDynamicValues(settings);
settings = this.plugins.executeModifier( settings = this.plugins.executeModifier(
@ -93,23 +100,7 @@ class Request {
); );
try { try {
const response = await request( const response = await request(settings);
removeOptionalKeys(
{
url: settings.endpoint,
method: settings.method,
headers: settings.headers,
qs: settings.query,
body: settings.payload,
json: true,
simple: false,
resolveWithFullResponse: true
},
['headers', 'qs', 'body']
)
);
let results = { let results = {
request: { request: {