]> git.immae.eu Git - github/bastienwirtz/homer.git/blob - src/mixins/service.js
Allow any service to override the credentials option
[github/bastienwirtz/homer.git] / src / mixins / service.js
1 export default {
2 props: {
3 proxy: Object,
4 },
5 created: function () {
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.
8 this.endpoint = this.item.endpoint || this.item.url;
9
10 if (this.endpoint.endsWith("/")) {
11 this.endpoint = this.endpoint.slice(0, -1);
12 }
13 },
14 methods: {
15 fetch: function (path, init) {
16 let options = {};
17
18 if (this.proxy?.useCredentials) {
19 options.credentials = "include";
20 }
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
28 options = Object.assign(options, init);
29
30 if (path.startsWith("/")) {
31 path = path.slice(1);
32 }
33
34 return fetch(`${this.endpoint}/${path}`, options).then((response) => {
35 if (!response.ok) {
36 throw new Error("Not 2xx response");
37 }
38 return response.json();
39 });
40 },
41 },
42 };