domoticz-api-linker
Version:
Domoticz API Javascript Bridge Connector
34 lines (33 loc) • 1.15 kB
JavaScript
import { DomoticzApiConnector } from './DomoticzApiConnector';
class DomoticzApiFetch extends DomoticzApiConnector {
async __generic(method, endpoint, data, content) {
const uriParams = (data !== undefined) ? dataToURI(data) : '';
const options = {
method,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: (content !== undefined) ? JSON.stringify(content) : null
};
const url = `${endpoint}${uriParams}`;
const result = await fetch(url, options);
return await result.json();
}
}
function dataToURI(data) {
return Object.entries(data).reduce((uri, [key, value]) => {
const valueStr = castToString(value);
return `${uri}&${encodeURI(key)}=${encodeURI(valueStr)}`;
}, '');
}
function castToString(value) {
if (typeof value === 'string')
return value;
if (typeof value === 'boolean')
return (value) ? 'true' : 'false';
if (typeof value === 'number')
return '' + value.toString();
return '';
}
export { DomoticzApiFetch };