From f888b2e4362929680ecd0c7a3727b7d19fe4b80f Mon Sep 17 00:00:00 2001 From: Simon Scherzinger Date: Fri, 2 Feb 2018 15:22:41 +0100 Subject: [PATCH] fix: create relation with additional template param --- src/Core.ts | 6 +++++- src/helper.ts | 2 +- src/resources/Resource.ts | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Core.ts b/src/Core.ts index 06c3b119..1eba80b3 100644 --- a/src/Core.ts +++ b/src/Core.ts @@ -368,7 +368,11 @@ export default class Core { .then(link => validator.validate(resource, `${link.profile}${this[relationsSymbol][relation].createTemplateModifier}`)) .then(() => this.follow(this[relationsSymbol][relation].relation)) .then(request => { - request.withTemplateParameters({}); + if (this[relationsSymbol][relation].additionalTemplateParam) { + request.withTemplateParameters(optionsToQuery({ + [this[relationsSymbol][relation].additionalTemplateParam]: this[this[relationsSymbol][relation].additionalTemplateParam], + })); + } return post(this[environmentSymbol], request, resource) }) .then(([c, traversal]) => diff --git a/src/helper.ts b/src/helper.ts index 977fc23d..c941b5ae 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -444,7 +444,7 @@ const modifier = { * @param {string?} templateURL optional templateURL for validating inputs * @returns {object} translated querystring object */ -export function optionsToQuery(options: filterOptions, templateURL: string): any { +export function optionsToQuery(options: filterOptions, templateURL?: string): any { const out: any = {}; if (options) { diff --git a/src/resources/Resource.ts b/src/resources/Resource.ts index 439e4c00..ab9f06b0 100644 --- a/src/resources/Resource.ts +++ b/src/resources/Resource.ts @@ -139,7 +139,11 @@ class Resource { .then(link => validator.validate(resource, `${link.profile}${this[relationsSymbol][relation].createTemplateModifier}`)) .then(() => this.newRequest().follow(this[relationsSymbol][relation].relation)) .then(request => { - request.withTemplateParameters({}); + if (this[relationsSymbol][relation].additionalTemplateParam) { + request.withTemplateParameters(optionsToQuery({ + [this[relationsSymbol][relation].additionalTemplateParam]: this[this[relationsSymbol][relation].additionalTemplateParam], + })); + } return post(this[environmentSymbol], request, resource) }) .then(([c, traversal]) =>