umami/lib/web.js

74 lines
1.8 KiB
JavaScript
Raw Normal View History

2020-07-26 09:12:42 +02:00
export const apiRequest = (method, url, body) =>
2020-07-24 04:56:55 +02:00
fetch(url, {
2020-07-26 09:12:42 +02:00
method,
2020-07-24 04:56:55 +02:00
cache: 'no-cache',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
2020-07-26 09:12:42 +02:00
body,
}).then(res => {
if (res.ok) {
return res.json();
}
2020-08-09 11:03:37 +02:00
if (['post', 'put', 'delete'].includes(method)) {
return res.text();
}
return null;
});
2020-07-26 09:12:42 +02:00
function parseQuery(url, params = {}) {
const query = Object.keys(params).reduce((values, key) => {
if (params[key] !== undefined) {
return values.concat(`${key}=${encodeURIComponent(params[key])}`);
}
return values;
}, []);
2020-07-26 09:12:42 +02:00
return query.length ? `${url}?${query.join('&')}` : url;
}
export const get = (url, params) => apiRequest('get', parseQuery(url, params));
export const del = (url, params) => apiRequest('delete', parseQuery(url, params));
2020-07-26 09:12:42 +02:00
export const post = (url, params) => apiRequest('post', url, JSON.stringify(params));
export const put = (url, params) => apiRequest('put', url, JSON.stringify(params));
export const hook = (_this, method, callback) => {
const orig = _this[method];
return (...args) => {
callback.apply(null, args);
return orig.apply(_this, args);
};
};
2020-08-21 11:51:42 +02:00
export const doNotTrack = () => {
2020-08-22 12:03:39 +02:00
if (
window.doNotTrack ||
navigator.doNotTrack ||
navigator.msDoNotTrack ||
'msTrackingProtectionEnabled' in window.external
) {
if (
window.doNotTrack == '1' ||
navigator.doNotTrack == 'yes' ||
navigator.doNotTrack == '1' ||
navigator.msDoNotTrack == '1' ||
2020-08-22 18:26:29 +02:00
(window.external &&
window.external.msTrackingProtectionEnabled &&
window.external.msTrackingProtectionEnabled())
2020-08-22 12:03:39 +02:00
) {
return true;
2020-08-21 11:51:42 +02:00
} else {
2020-08-22 12:03:39 +02:00
return false;
2020-08-21 11:51:42 +02:00
}
} else {
2020-08-22 12:03:39 +02:00
return false;
2020-08-21 11:51:42 +02:00
}
2020-08-22 12:03:39 +02:00
};