homey-api 3.17.11 → 3.18.0
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.
|
@@ -4761,6 +4761,40 @@ export class AthomConnectAPI {
|
|
|
4761
4761
|
}): Promise<any>;
|
|
4762
4762
|
}
|
|
4763
4763
|
|
|
4764
|
+
export class AthomDeviceFirmwareAPI {
|
|
4765
|
+
constructor(opts?: {
|
|
4766
|
+
baseUrl?: string;
|
|
4767
|
+
|
|
4768
|
+
debug?: boolean;
|
|
4769
|
+
|
|
4770
|
+
secret?: string;
|
|
4771
|
+
});
|
|
4772
|
+
|
|
4773
|
+
getFirmwareURL(opts: {
|
|
4774
|
+
integrity: string;
|
|
4775
|
+
|
|
4776
|
+
noCache?: boolean;
|
|
4777
|
+
|
|
4778
|
+
sourceUrl?: string;
|
|
4779
|
+
|
|
4780
|
+
homeyTag?: string;
|
|
4781
|
+
|
|
4782
|
+
$timeout?: number;
|
|
4783
|
+
}): Promise<{ url: string; cache: string }>;
|
|
4784
|
+
|
|
4785
|
+
getFirmwareURL(opts: {
|
|
4786
|
+
integrity: string;
|
|
4787
|
+
|
|
4788
|
+
noCache?: boolean;
|
|
4789
|
+
|
|
4790
|
+
sourceUrl?: string;
|
|
4791
|
+
|
|
4792
|
+
homeyTag?: string;
|
|
4793
|
+
|
|
4794
|
+
$timeout?: number;
|
|
4795
|
+
}): Promise<{ url: string; cache: string }>;
|
|
4796
|
+
}
|
|
4797
|
+
|
|
4764
4798
|
export class AthomDNSAPI {
|
|
4765
4799
|
constructor(opts?: {
|
|
4766
4800
|
baseUrl?: string;
|
|
@@ -8261,6 +8295,40 @@ export class AthomDNSAPI {
|
|
|
8261
8295
|
getHomeyCertificate(opts: { secret: string }): Promise<any>;
|
|
8262
8296
|
}
|
|
8263
8297
|
|
|
8298
|
+
export class AthomDeviceFirmwareAPI {
|
|
8299
|
+
constructor(opts?: {
|
|
8300
|
+
baseUrl?: string;
|
|
8301
|
+
|
|
8302
|
+
debug?: boolean;
|
|
8303
|
+
|
|
8304
|
+
secret?: string;
|
|
8305
|
+
});
|
|
8306
|
+
|
|
8307
|
+
getFirmwareURL(opts: {
|
|
8308
|
+
integrity: string;
|
|
8309
|
+
|
|
8310
|
+
noCache?: boolean;
|
|
8311
|
+
|
|
8312
|
+
sourceUrl?: string;
|
|
8313
|
+
|
|
8314
|
+
homeyTag?: string;
|
|
8315
|
+
|
|
8316
|
+
$timeout?: number;
|
|
8317
|
+
}): Promise<{ url: string; cache: string }>;
|
|
8318
|
+
|
|
8319
|
+
getFirmwareURL(opts: {
|
|
8320
|
+
integrity: string;
|
|
8321
|
+
|
|
8322
|
+
noCache?: boolean;
|
|
8323
|
+
|
|
8324
|
+
sourceUrl?: string;
|
|
8325
|
+
|
|
8326
|
+
homeyTag?: string;
|
|
8327
|
+
|
|
8328
|
+
$timeout?: number;
|
|
8329
|
+
}): Promise<{ url: string; cache: string }>;
|
|
8330
|
+
}
|
|
8331
|
+
|
|
8264
8332
|
export class AthomEnergyAPI {
|
|
8265
8333
|
constructor(opts?: {
|
|
8266
8334
|
baseUrl?: string;
|
package/index.js
CHANGED
|
@@ -20,6 +20,7 @@ module.exports.AthomStoreAPI = require('./lib/AthomStoreAPI');
|
|
|
20
20
|
module.exports.AthomWeatherAPI = require('./lib/AthomWeatherAPI');
|
|
21
21
|
module.exports.AthomWebhooksAPI = require('./lib/AthomWebhooksAPI');
|
|
22
22
|
module.exports.AthomEnergyAPI = require('./lib/AthomEnergyAPI');
|
|
23
|
+
module.exports.AthomDeviceFirmwareAPI = require('./lib/AthomDeviceFirmwareAPI');
|
|
23
24
|
|
|
24
25
|
// Homey Cloud
|
|
25
26
|
module.exports.HomeyCloudAPI = require('./lib/HomeyCloudAPI');
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const API = require('./API');
|
|
4
|
+
|
|
5
|
+
class AthomDeviceFirmwareAPI extends API {
|
|
6
|
+
|
|
7
|
+
static SPECIFICATION = {
|
|
8
|
+
host: 'device-firmware.athom.com',
|
|
9
|
+
basePath: '/',
|
|
10
|
+
operations: {},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
static JSDOC_PRIVATE = true;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Get the location of a firmware update file.
|
|
17
|
+
*
|
|
18
|
+
* @param {Object} opts
|
|
19
|
+
* @param {string} opts.integrity - The integrity hash (i.e unique key) of the firmware file, e.g. "sha256:abcdef1234567890..."
|
|
20
|
+
* @param {boolean} [opts.noCache] - Whether to bypass the cache and fetch the firmware fresh from sourceUrl. Default: false.
|
|
21
|
+
* @param {string} [opts.sourceUrl] - The original URL of the firmware file, if the cache is bypassed or missed the server can attempt to fetch the file from this URL.
|
|
22
|
+
* @param {string} [opts.homeyTag] - How to tag the file in the cache (requires sourceUrl to be set, and the cache to be bypassed or missed).
|
|
23
|
+
* @param {number} [opts.$timeout] - Optional timeout in milliseconds for this API call.
|
|
24
|
+
* @returns {Promise<{ url: string, cache: string }>}
|
|
25
|
+
*/
|
|
26
|
+
async getFirmwareURL({ integrity, noCache, sourceUrl, homeyTag, $timeout }) {
|
|
27
|
+
const query = {};
|
|
28
|
+
|
|
29
|
+
if (typeof this.__secret === 'string') {
|
|
30
|
+
query.secret = this.__secret;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (noCache !== undefined) {
|
|
34
|
+
query.noCache = noCache;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (sourceUrl !== undefined) {
|
|
38
|
+
query.sourceUrl = sourceUrl;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (homeyTag !== undefined) {
|
|
42
|
+
query.homeyTag = homeyTag;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return this.call({
|
|
46
|
+
method: 'get',
|
|
47
|
+
path: `/firmware/${integrity}`,
|
|
48
|
+
query,
|
|
49
|
+
timeout: $timeout,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
module.exports = AthomDeviceFirmwareAPI;
|
|
@@ -179,11 +179,13 @@ class DiscoveryManager {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
const homeyVersion = response.headers.get('X-Homey-Version');
|
|
182
|
+
const homeyTier = response.headers.get('X-Homey-Tier') ?? null;
|
|
182
183
|
|
|
183
184
|
return {
|
|
184
185
|
baseUrl,
|
|
185
186
|
strategyId,
|
|
186
187
|
homeyVersion,
|
|
188
|
+
homeyTier,
|
|
187
189
|
};
|
|
188
190
|
};
|
|
189
191
|
|
|
@@ -230,10 +230,11 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
230
230
|
return result;
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
__applyDiscoveryResult({ baseUrl, strategyId, homeyVersion }) {
|
|
233
|
+
__applyDiscoveryResult({ baseUrl, strategyId, homeyVersion, homeyTier }) {
|
|
234
234
|
this.__baseUrl = baseUrl;
|
|
235
235
|
this.__baseUrlPromise = Promise.resolve(baseUrl);
|
|
236
236
|
this.__strategyId = strategyId;
|
|
237
|
+
this.__tierCache[this.id] = homeyTier;
|
|
237
238
|
|
|
238
239
|
if (homeyVersion != null) {
|
|
239
240
|
this.version = homeyVersion;
|
|
@@ -243,6 +244,7 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
243
244
|
baseUrl,
|
|
244
245
|
strategyId,
|
|
245
246
|
homeyVersion,
|
|
247
|
+
homeyTier,
|
|
246
248
|
};
|
|
247
249
|
}
|
|
248
250
|
|
|
@@ -290,7 +292,7 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
290
292
|
headers,
|
|
291
293
|
body,
|
|
292
294
|
},
|
|
293
|
-
$timeout
|
|
295
|
+
$timeout,
|
|
294
296
|
);
|
|
295
297
|
|
|
296
298
|
const resStatusCode = res.status;
|
|
@@ -341,7 +343,7 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
341
343
|
error_description: resBodyJson.error_description,
|
|
342
344
|
stack: resBodyJson.stack,
|
|
343
345
|
},
|
|
344
|
-
resStatusCode
|
|
346
|
+
resStatusCode,
|
|
345
347
|
);
|
|
346
348
|
}
|
|
347
349
|
|
|
@@ -350,7 +352,7 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
350
352
|
{
|
|
351
353
|
error: resBodyText,
|
|
352
354
|
},
|
|
353
|
-
resStatusCode
|
|
355
|
+
resStatusCode,
|
|
354
356
|
);
|
|
355
357
|
}
|
|
356
358
|
|
|
@@ -358,7 +360,7 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
358
360
|
{
|
|
359
361
|
error: resStatusText,
|
|
360
362
|
},
|
|
361
|
-
resStatusCode
|
|
363
|
+
resStatusCode,
|
|
362
364
|
);
|
|
363
365
|
}
|
|
364
366
|
|
|
@@ -507,19 +509,11 @@ class HomeyAPIV3 extends HomeyAPI {
|
|
|
507
509
|
return this.__socketSession.isConnected();
|
|
508
510
|
}
|
|
509
511
|
|
|
510
|
-
async subscribe(
|
|
511
|
-
uri,
|
|
512
|
-
handlers
|
|
513
|
-
) {
|
|
512
|
+
async subscribe(uri, handlers) {
|
|
514
513
|
return this.__subscriptionRegistry.subscribe(uri, handlers);
|
|
515
514
|
}
|
|
516
515
|
|
|
517
|
-
async __apiRequest({
|
|
518
|
-
uri,
|
|
519
|
-
operation,
|
|
520
|
-
args,
|
|
521
|
-
timeout = this.constructor.DEFAULT_TIMEOUT,
|
|
522
|
-
}) {
|
|
516
|
+
async __apiRequest({ uri, operation, args, timeout = this.constructor.DEFAULT_TIMEOUT }) {
|
|
523
517
|
return this.__socketSession.requestApi({
|
|
524
518
|
uri,
|
|
525
519
|
operation,
|