diff options
Diffstat (limited to 'src/mixins/service.js')
-rw-r--r-- | src/mixins/service.js | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mixins/service.js b/src/mixins/service.js index 99d8c01..ae23a27 100644 --- a/src/mixins/service.js +++ b/src/mixins/service.js | |||
@@ -6,6 +6,10 @@ export default { | |||
6 | // custom service often consume info from an API using the item link (url) as a base url, | 6 | // custom service often consume info from an API using the item link (url) as a base url, |
7 | // but sometimes the base url is different. An optional alternative URL can be provided with the "endpoint" key. | 7 | // but sometimes the base url is different. An optional alternative URL can be provided with the "endpoint" key. |
8 | this.endpoint = this.item.endpoint || this.item.url; | 8 | this.endpoint = this.item.endpoint || this.item.url; |
9 | |||
10 | if (this.endpoint.endsWith("/")) { | ||
11 | this.endpoint = this.endpoint.slice(0, -1); | ||
12 | } | ||
9 | }, | 13 | }, |
10 | methods: { | 14 | methods: { |
11 | fetch: function (path, init) { | 15 | fetch: function (path, init) { |
@@ -15,8 +19,18 @@ export default { | |||
15 | options.credentials = "include"; | 19 | options.credentials = "include"; |
16 | } | 20 | } |
17 | 21 | ||
22 | // Each item can override the credential settings | ||
23 | if (this.item.useCredentials !== undefined) { | ||
24 | options.credentials = | ||
25 | this.item.useCredentials === true ? "include" : "omit"; | ||
26 | } | ||
27 | |||
18 | options = Object.assign(options, init); | 28 | options = Object.assign(options, init); |
19 | 29 | ||
30 | if (path.startsWith("/")) { | ||
31 | path = path.slice(1); | ||
32 | } | ||
33 | |||
20 | return fetch(`${this.endpoint}/${path}`, options).then((response) => { | 34 | return fetch(`${this.endpoint}/${path}`, options).then((response) => { |
21 | if (!response.ok) { | 35 | if (!response.ok) { |
22 | throw new Error("Not 2xx response"); | 36 | throw new Error("Not 2xx response"); |