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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homey-api",
3
- "version": "3.17.11",
3
+ "version": "3.18.0",
4
4
  "description": "Homey API",
5
5
  "main": "index.js",
6
6
  "license": "SEE LICENSE",