@camstack/addon-provider-homeassistant 1.2.30 → 1.2.32

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.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  //#endregion
6
- const require_dist = require("../dist-XWveotlj.js");
6
+ const require_dist = require("../dist-BxZFHIBC.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  //#region src/ha-export/topics.ts
9
9
  /**
@@ -5517,7 +5517,7 @@ var HaExportAddon = class extends require_dist.BaseAddon {
5517
5517
  const plateText = readString(data, "plateText");
5518
5518
  const lastSeen = readNumber(data, "lastSeen") ?? Date.now();
5519
5519
  const zonesVisited = readStringArray(data, "zonesVisited");
5520
- const mediaUrl = this.mintTrackMediaUrl(trackId);
5520
+ const mediaUrl = this.mintTrackMediaUrl(trackId, deviceId);
5521
5521
  const values = projectTrackLifecycle(deviceKey, {
5522
5522
  deviceId,
5523
5523
  trackId,
@@ -6580,10 +6580,10 @@ var HaExportAddon = class extends require_dist.BaseAddon {
6580
6580
  res.end();
6581
6581
  return;
6582
6582
  }
6583
- const trackId = decodeURIComponent(id);
6583
+ const compositeId = decodeURIComponent(id);
6584
6584
  if (!verifyMediaSignature({
6585
6585
  secret: this.mediaSecret,
6586
- id: trackId,
6586
+ id: compositeId,
6587
6587
  exp: url.searchParams.get("exp") ?? void 0,
6588
6588
  sig: url.searchParams.get("sig") ?? void 0,
6589
6589
  nowMs: Date.now()
@@ -6592,9 +6592,18 @@ var HaExportAddon = class extends require_dist.BaseAddon {
6592
6592
  res.end();
6593
6593
  return;
6594
6594
  }
6595
+ const sep = compositeId.indexOf(":");
6596
+ const deviceId = sep > 0 ? Number(compositeId.slice(0, sep)) : NaN;
6597
+ const trackId = sep > 0 ? compositeId.slice(sep + 1) : "";
6598
+ if (!Number.isInteger(deviceId) || deviceId <= 0 || trackId.length === 0) {
6599
+ res.statusCode = 400;
6600
+ res.end();
6601
+ return;
6602
+ }
6595
6603
  try {
6596
6604
  const first = (await this.ctx.api.pipelineAnalytics.getTrackMedia.query({
6597
6605
  trackId,
6606
+ deviceId,
6598
6607
  kinds: [
6599
6608
  "thumbnailSmall",
6600
6609
  "thumbnail",
@@ -6627,12 +6636,12 @@ var HaExportAddon = class extends require_dist.BaseAddon {
6627
6636
  * cannot open is worse than no image, because it renders as a broken
6628
6637
  * entity rather than an empty one.
6629
6638
  */
6630
- mintTrackMediaUrl(trackId) {
6639
+ mintTrackMediaUrl(trackId, deviceId) {
6631
6640
  if (this.mediaBaseUrl === null || this.mediaSecret.length === 0) return null;
6632
6641
  return buildMediaUrl({
6633
6642
  baseUrl: this.mediaBaseUrl,
6634
6643
  routePrefix: MEDIA_ROUTE_PREFIX,
6635
- id: trackId,
6644
+ id: `${String(deviceId)}:${trackId}`,
6636
6645
  secret: this.mediaSecret,
6637
6646
  expMs: Date.now() + MEDIA_URL_TTL_MS
6638
6647
  });
@@ -1,4 +1,4 @@
1
- import { M as deviceExportCapability, Ot as EventCategory, S as buildAddonRouteProvider, Y as oauthIntegrationCapability, a as CameraSwitchIdSchema, c as HvacModeSchema, f as addonRoutesCapability, ft as BaseAddon, i as COCO_TO_MACRO, l as MediaPlayerRepeatSchema, s as FanDirectionSchema, t as AlarmArmModeSchema, wt as string } from "../dist-CzZXxFrl.mjs";
1
+ import { M as deviceExportCapability, Ot as EventCategory, S as buildAddonRouteProvider, Y as oauthIntegrationCapability, a as CameraSwitchIdSchema, c as HvacModeSchema, f as addonRoutesCapability, ft as BaseAddon, i as COCO_TO_MACRO, l as MediaPlayerRepeatSchema, s as FanDirectionSchema, t as AlarmArmModeSchema, wt as string } from "../dist-BMrkrIHs.mjs";
2
2
  import { createHmac, timingSafeEqual } from "node:crypto";
3
3
  //#region src/ha-export/topics.ts
4
4
  /**
@@ -5512,7 +5512,7 @@ var HaExportAddon = class extends BaseAddon {
5512
5512
  const plateText = readString(data, "plateText");
5513
5513
  const lastSeen = readNumber(data, "lastSeen") ?? Date.now();
5514
5514
  const zonesVisited = readStringArray(data, "zonesVisited");
5515
- const mediaUrl = this.mintTrackMediaUrl(trackId);
5515
+ const mediaUrl = this.mintTrackMediaUrl(trackId, deviceId);
5516
5516
  const values = projectTrackLifecycle(deviceKey, {
5517
5517
  deviceId,
5518
5518
  trackId,
@@ -6575,10 +6575,10 @@ var HaExportAddon = class extends BaseAddon {
6575
6575
  res.end();
6576
6576
  return;
6577
6577
  }
6578
- const trackId = decodeURIComponent(id);
6578
+ const compositeId = decodeURIComponent(id);
6579
6579
  if (!verifyMediaSignature({
6580
6580
  secret: this.mediaSecret,
6581
- id: trackId,
6581
+ id: compositeId,
6582
6582
  exp: url.searchParams.get("exp") ?? void 0,
6583
6583
  sig: url.searchParams.get("sig") ?? void 0,
6584
6584
  nowMs: Date.now()
@@ -6587,9 +6587,18 @@ var HaExportAddon = class extends BaseAddon {
6587
6587
  res.end();
6588
6588
  return;
6589
6589
  }
6590
+ const sep = compositeId.indexOf(":");
6591
+ const deviceId = sep > 0 ? Number(compositeId.slice(0, sep)) : NaN;
6592
+ const trackId = sep > 0 ? compositeId.slice(sep + 1) : "";
6593
+ if (!Number.isInteger(deviceId) || deviceId <= 0 || trackId.length === 0) {
6594
+ res.statusCode = 400;
6595
+ res.end();
6596
+ return;
6597
+ }
6590
6598
  try {
6591
6599
  const first = (await this.ctx.api.pipelineAnalytics.getTrackMedia.query({
6592
6600
  trackId,
6601
+ deviceId,
6593
6602
  kinds: [
6594
6603
  "thumbnailSmall",
6595
6604
  "thumbnail",
@@ -6622,12 +6631,12 @@ var HaExportAddon = class extends BaseAddon {
6622
6631
  * cannot open is worse than no image, because it renders as a broken
6623
6632
  * entity rather than an empty one.
6624
6633
  */
6625
- mintTrackMediaUrl(trackId) {
6634
+ mintTrackMediaUrl(trackId, deviceId) {
6626
6635
  if (this.mediaBaseUrl === null || this.mediaSecret.length === 0) return null;
6627
6636
  return buildMediaUrl({
6628
6637
  baseUrl: this.mediaBaseUrl,
6629
6638
  routePrefix: MEDIA_ROUTE_PREFIX,
6630
- id: trackId,
6639
+ id: `${String(deviceId)}:${trackId}`,
6631
6640
  secret: this.mediaSecret,
6632
6641
  expMs: Date.now() + MEDIA_URL_TTL_MS
6633
6642
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homeassistant",
3
- "version": "1.2.30",
3
+ "version": "1.2.32",
4
4
  "description": "Home Assistant device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",