Skip to content

Commit

Permalink
removed all promises
Browse files Browse the repository at this point in the history
  • Loading branch information
windkh committed Sep 27, 2024
1 parent 1adb435 commit 5b06ddc
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 118 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Changelog
All notable changes to this project will be documented in this file.

## [11.3.0] - 2024-09-27
### removed all promises

## [11.2.0] - 2024-09-19
### all gen2+ devices can act as blu gateway - [#164](https://github.com/windkh/node-red-contrib-shelly/issues/164)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node-red-contrib-shelly",
"version": "11.2.0",
"version": "11.3.0",
"description": "Shelly nodes.",
"node-red": {
"version": ">=3.0.0",
Expand Down
208 changes: 91 additions & 117 deletions shelly/99-shelly.js
Original file line number Diff line number Diff line change
Expand Up @@ -297,86 +297,73 @@ module.exports = function (RED) {
}


// Gets the type from the model.
function getDeviceType(model){
let deviceType;

let keys = Object.keys(config.devices);
for (let i = 0; i < keys.length; i++) {
let device = config.devices[i];
if (device.model === model) {
deviceType = device.type;
break;
}

};

return deviceType;
}
// Gets the type from the model.
function getDeviceType(model){
let deviceType;

let keys = Object.keys(config.devices);
for (let i = 0; i < keys.length; i++) {
let device = config.devices[i];
if (device.model === model) {
deviceType = device.type;
break;
}


};

// generic REST request wrapper with promise
function shellyRequestAsync(axiosInstance, method, route, params, data, credentials, timeout){
return new Promise(function (resolve, reject) {
return deviceType;
}

if (timeout === undefined || timeout === null){
timeout = 5003;
};

// We avoid an invalid timeout by taking a default if 0.
let requestTimeout = timeout;
if (requestTimeout <= 0){
requestTimeout = 5004;
}
// generic REST request wrapper.
async function shellyRequestAsync(axiosInstance, method, route, params, data, credentials, timeout){

if (timeout === undefined || timeout === null){
timeout = 5003;
};

let headers = getHeaders(credentials);
// We avoid an invalid timeout by taking a default if 0.
let requestTimeout = timeout;
if (requestTimeout <= 0){
requestTimeout = 5004;
}

let baseUrl = 'http://' + credentials.hostname;
let config = {
baseURL : baseUrl,
url : route,
method : method,
params : params,
data : data,
headers : headers,
timeout: requestTimeout,
validateStatus : (status) => status === 200 || status === 401
};
let headers = getHeaders(credentials);

try {
const request = axiosInstance.request(config);

request.then(response => {
if (response.status == 200){
resolve(response.data)
} else if (response.status == 401){
config.headers = {
'Authorization': getDigestAuthorization(response, credentials, config)
}

const digestRequest = axiosInstance.request(config);
digestRequest.then(response => {
if (response.status == 200){
resolve(response.data)
}
else {
reject(response.statusText + ' ' + config.url);
}
})
} else {
reject(response.statusText);
}
})
.catch(error => {
reject(error);
});
let baseUrl = 'http://' + credentials.hostname;
let config = {
baseURL : baseUrl,
url : route,
method : method,
params : params,
data : data,
headers : headers,
timeout: requestTimeout,
validateStatus : (status) => status === 200 || status === 401
};

let result;
const response = await axiosInstance.request(config);
if (response.status == 200){
result = response.data;
} else if (response.status == 401){
config.headers = {
'Authorization': getDigestAuthorization(response, credentials, config)
}
catch(error2) {
reject(error2);

const digestResponse = await axiosInstance.request(config);
if (digestResponse.status == 200){
result = digestResponse.data;
}
});
else {
throw new Error(digestResponse.statusText + ' ' + config.url);
}

} else {
throw new Error(response.statusText + ' ' + config.url);
}

return result;
}


Expand Down Expand Up @@ -560,11 +547,8 @@ module.exports = function (RED) {
}
}

function startAsync(node, types){
return new Promise(function (resolve, reject) {
start(node, types);
resolve();
});
async function startAsync(node, types){
start(node, types);
}

// GEN 1 --------------------------------------------------------------------------------------
Expand Down Expand Up @@ -2841,53 +2825,43 @@ module.exports = function (RED) {
return params;
};

// generic REST cloud request wrapper with promise
function shellyCloudRequestAsync(method, route, data, credentials, timeout){
return new Promise(function (resolve, reject) {
// generic REST cloud request wrapper
async function shellyCloudRequestAsync(method, route, data, credentials, timeout){

if (timeout === undefined || timeout === null){
timeout = 10000;
};

if (timeout === undefined || timeout === null){
timeout = 10000;
};
// We avoid an invalid timeout by taking a default if 0.
let requestTimeout = timeout;
if (requestTimeout <= 0){
requestTimeout = 10000;
}

// We avoid an invalid timeout by taking a default if 0.
let requestTimeout = timeout;
if (requestTimeout <= 0){
requestTimeout = 10000;
}
let encodedData = 'auth_key=' + credentials.authKey;
if (data !== undefined && data !== null) {
encodedData += '&' + data;
}

let encodedData = 'auth_key=' + credentials.authKey;
if (data !== undefined && data !== null) {
encodedData += '&' + data;
}
let baseUrl = credentials.serverUri;
let config = {
baseURL : baseUrl,
url : route,
method : method,
data : encodedData,
timeout: requestTimeout,
validateStatus : (status) => status === 200
};

let baseUrl = credentials.serverUri;
let config = {
baseURL : baseUrl,
url : route,
method : method,
data : encodedData,
timeout: requestTimeout,
validateStatus : (status) => status === 200
};
let result;
const response = await cloudAxios.request(config);
if (response.status == 200){
result = response.data;
} else {
throw new Error(response.statusText + ' ' + config.url);
}

try {
const request = cloudAxios.request(config);

request.then(response => {
if (response.status == 200){
resolve(response.data)
} else {
reject(response.statusText);
}
})
.catch(error => {
reject(error);
});
}
catch(error2) {
reject(error2);
}
});
return result;
}

// --------------------------------------------------------------------------------------------
Expand Down

0 comments on commit 5b06ddc

Please sign in to comment.