myenergi-api 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AuthDigest.js +5 -1
- package/dist/Digest.d.ts +2 -0
- package/dist/Digest.js +29 -4
- package/package.json +7 -7
package/dist/AuthDigest.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/dist/Digest.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare class Digest {
|
|
2
2
|
private _authDigest?;
|
|
3
3
|
private _baseUrl;
|
|
4
|
+
private _maxRedirectCount;
|
|
5
|
+
private _maxRetryCount;
|
|
4
6
|
constructor(baseUrl: string, username: string, password: string);
|
|
5
7
|
private request;
|
|
6
8
|
get(requestUrl: string, data?: any): Promise<any>;
|
package/dist/Digest.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -25,6 +29,8 @@ const url = __importStar(require("url"));
|
|
|
25
29
|
const AuthDigest_1 = require("./AuthDigest");
|
|
26
30
|
class Digest {
|
|
27
31
|
constructor(baseUrl, username, password) {
|
|
32
|
+
this._maxRedirectCount = 3;
|
|
33
|
+
this._maxRetryCount = 2;
|
|
28
34
|
this._baseUrl = url.parse(baseUrl, true);
|
|
29
35
|
this._authDigest = new AuthDigest_1.AuthDigest(username, password, (err) => {
|
|
30
36
|
console.error(err);
|
|
@@ -40,7 +46,26 @@ class Digest {
|
|
|
40
46
|
const req = https.request(options, (res) => {
|
|
41
47
|
var _a, _b;
|
|
42
48
|
if (res.statusCode == 401) {
|
|
43
|
-
|
|
49
|
+
const myenergiAsn = res.headers["x_myenergi-asn"];
|
|
50
|
+
if (myenergiAsn && myenergiAsn !== "undefined" && myenergiAsn !== this._baseUrl.host) {
|
|
51
|
+
if (redirectCount > this._maxRedirectCount) {
|
|
52
|
+
reject(`Too many redirects: ${myenergiAsn}`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this._baseUrl.host = myenergiAsn;
|
|
56
|
+
this._baseUrl.hostname = myenergiAsn;
|
|
57
|
+
options.host = myenergiAsn;
|
|
58
|
+
options.hostname = myenergiAsn;
|
|
59
|
+
redirectCount++;
|
|
60
|
+
return this.request(options, data, retryCount, redirectCount)
|
|
61
|
+
.then((value) => {
|
|
62
|
+
resolve(value);
|
|
63
|
+
})
|
|
64
|
+
.catch((resaon) => {
|
|
65
|
+
reject(resaon);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (retryCount > this._maxRetryCount) {
|
|
44
69
|
reject("Authentication failed");
|
|
45
70
|
return;
|
|
46
71
|
}
|
|
@@ -65,7 +90,7 @@ class Digest {
|
|
|
65
90
|
else if (res.statusCode >= 200 && res.statusCode < 300) {
|
|
66
91
|
const myenergiAsn = res.headers["x_myenergi-asn"];
|
|
67
92
|
if (myenergiAsn && myenergiAsn !== "undefined" && myenergiAsn !== this._baseUrl.host) {
|
|
68
|
-
if (redirectCount >
|
|
93
|
+
if (redirectCount > this._maxRedirectCount) {
|
|
69
94
|
reject(`Too many redirects: ${myenergiAsn}`);
|
|
70
95
|
return;
|
|
71
96
|
}
|
|
@@ -91,7 +116,7 @@ class Digest {
|
|
|
91
116
|
});
|
|
92
117
|
}
|
|
93
118
|
else if (res.statusCode >= 300 && res.statusCode < 400) {
|
|
94
|
-
if (redirectCount >
|
|
119
|
+
if (redirectCount > this._maxRedirectCount) {
|
|
95
120
|
reject(`Too many redirects: ${res.headers["location"]}`);
|
|
96
121
|
return;
|
|
97
122
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "myenergi-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "NodeJS implementation of MyEnergi API for controlling Zappi, Eddi and other MyEnergi products",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"dependencies": {},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/chai": "^4.3.0",
|
|
39
|
-
"@types/mocha": "^9.
|
|
39
|
+
"@types/mocha": "^9.1.0",
|
|
40
40
|
"@types/node": "^16.11.12",
|
|
41
|
-
"dotenv": "^
|
|
42
|
-
"chai": "^4.3.
|
|
43
|
-
"mocha": "^9.1
|
|
41
|
+
"dotenv": "^16.0.0",
|
|
42
|
+
"chai": "^4.3.6",
|
|
43
|
+
"mocha": "^9.2.1",
|
|
44
44
|
"prettier": "^2.5.1",
|
|
45
|
-
"ts-node": "^10.
|
|
45
|
+
"ts-node": "^10.7.0",
|
|
46
46
|
"tslint": "^6.1.3",
|
|
47
|
-
"typescript": "^4.
|
|
47
|
+
"typescript": "^4.6.2"
|
|
48
48
|
}
|
|
49
49
|
}
|