webhook: filter allowed devices

This commit is contained in:
Koushik Dutta
2022-01-27 20:28:15 -08:00
parent 80909addc8
commit 68e8578b50
4 changed files with 7 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
import { ScryptedDeviceType, ScryptedInterface } from "@scrypted/sdk";
export function canMixin(type: ScryptedDeviceType, interfaces: string[]): boolean {
export function isPublishable(type: ScryptedDeviceType, interfaces: string[]): boolean {
const set = new Set(interfaces);
set.delete(ScryptedInterface.ObjectDetection);
set.delete(ScryptedInterface.DeviceDiscovery);

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/webhook",
"version": "0.0.16",
"version": "0.0.17",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/webhook",
"version": "0.0.16",
"version": "0.0.17",
"dependencies": {
"@types/node": "^16.6.1"
},

View File

@@ -33,5 +33,5 @@
"devDependencies": {
"@scrypted/sdk": "file:../../sdk"
},
"version": "0.0.16"
"version": "0.0.17"
}

View File

@@ -6,6 +6,8 @@ import { randomBytes } from 'crypto';
const allInterfaceMethods: string[] = [].concat(...Object.values(ScryptedInterfaceDescriptors).map((type: any) => type.methods));
const allInterfaceProperties: string[] = [].concat(...Object.values(ScryptedInterfaceDescriptors).map((type: any) => type.properties));
import { isPublishable} from '../../mqtt/src/publishable-types';
const { systemManager, endpointManager, mediaManager } = sdk;
const mediaObjectMethods = [
@@ -187,19 +189,7 @@ class WebhookPlugin extends ScryptedDeviceBase implements Settings, MixinProvide
}
async canMixin(type: ScryptedDeviceType, interfaces: string[]): Promise<string[]> {
const set = new Set(interfaces);
set.delete(ScryptedInterface.ObjectDetection);
set.delete(ScryptedInterface.DeviceDiscovery);
set.delete(ScryptedInterface.DeviceCreator);
set.delete(ScryptedInterface.DeviceProvider);
set.delete(ScryptedInterface.MixinProvider);
set.delete(ScryptedInterface.PushHandler);
set.delete(ScryptedInterface.EngineIOHandler);
set.delete(ScryptedInterface.HttpRequestHandler);
set.delete(ScryptedInterface.Settings);
set.delete(ScryptedInterface.Readme);
set.delete(ScryptedInterface.BufferConverter);
if (!set.size)
if (!isPublishable(type, interfaces))
return;
return [
ScryptedInterface.Settings,