Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
uid = str(uuid4())
self.subscriptions[name] = uid
self.client.subscribe(cmd_info["uri"], uid, callback_wrapper)
return request_func
def unsubscribe(self, name, cmd_info):
def request_func():
uid = self.subscriptions.get(name)
if not uid:
raise ValueError("Not subscribed.")
self.client.unsubscribe(uid)
del self.subscriptions[name]
return request_func
class MediaControl(WebOSControlBase):
COMMANDS = {
"volume_up": {"uri": "ssap://audio/volumeUp"},
"volume_down": {"uri": "ssap://audio/volumeDown"},
"get_volume": {
"uri": "ssap://audio/getVolume",
"validation": standard_validation,
"subscription": True,
},
"set_volume": {
"uri": "ssap://audio/setVolume",
"args": [int],
"payload": {"volume": arguments(0)}
},
"mute": {
"uri": "ssap://audio/setMute",
"args": [bool],
"payload": {"volume": arguments(0)}
},
"mute": {
"uri": "ssap://audio/setMute",
"args": [bool],
"payload": {"mute": arguments(0)}
},
"play": {"uri": "ssap://media.controls/play"},
"pause": {"uri": "ssap://media.controls/pause"},
"stop": {"uri": "ssap://media.controls/stop"},
"rewind": {"uri": "ssap://media.controls/rewind"},
"fast_forward": {"uri": "ssap://media.controls/fastForward"},
}
class TvControl(WebOSControlBase):
COMMANDS = {
"channel_down": {"uri": "ssap://tv/channelDown"},
"channel_up": {"uri": "ssap://tv/channelUp"},
}
class SystemControl(WebOSControlBase):
COMMANDS = {
"power_off": {"uri": "ssap://system/turnOff"},
"info": {
"uri": "ssap://com.webos.service.update/getCurrentSWInformation",
"validation": standard_validation,
},
"notify": {
"uri": "ssap://system.notifications/createToast",
"args": [str],
class SystemControl(WebOSControlBase):
COMMANDS = {
"power_off": {"uri": "ssap://system/turnOff"},
"info": {
"uri": "ssap://com.webos.service.update/getCurrentSWInformation",
"validation": standard_validation,
},
"notify": {
"uri": "ssap://system.notifications/createToast",
"args": [str],
"payload": {"message": arguments(0)}
}
}
class ApplicationControl(WebOSControlBase):
COMMANDS = {
"list_apps": {
"uri": "ssap://com.webos.applicationManager/listApps",
"args": [],
"kwargs": {},
"payload": {},
"validation": standard_validation,
"return": lambda payload: [Application(x) for x in payload["apps"]]
},
"launch": {
"uri": "ssap://system.launcher/launch",
"args": [Application],
"kwargs": {"content_id": str, "params": dict},
"payload": {
"id": arguments(0, postprocess=lambda app: app["id"]),
"contentId": arguments("content_id", default=None),
"play": {"uri": "ssap://media.controls/play"},
"pause": {"uri": "ssap://media.controls/pause"},
"stop": {"uri": "ssap://media.controls/stop"},
"rewind": {"uri": "ssap://media.controls/rewind"},
"fast_forward": {"uri": "ssap://media.controls/fastForward"},
}
class TvControl(WebOSControlBase):
COMMANDS = {
"channel_down": {"uri": "ssap://tv/channelDown"},
"channel_up": {"uri": "ssap://tv/channelUp"},
}
class SystemControl(WebOSControlBase):
COMMANDS = {
"power_off": {"uri": "ssap://system/turnOff"},
"info": {
"uri": "ssap://com.webos.service.update/getCurrentSWInformation",
"validation": standard_validation,
},
"notify": {
"uri": "ssap://system.notifications/createToast",
"args": [str],
"payload": {"message": arguments(0)}
}
}
class ApplicationControl(WebOSControlBase):
COMMANDS = {
self.mouse_ws = self.ws_class(sock_path)
self.mouse_ws.connect()
def disconnect_input(self):
self.mouse_ws.close()
def exec_mouse_command(self, cmd_name, cmd_info):
def request_func(*args, **kwargs):
params = process_payload(cmd_info["command"], *args, **kwargs)
payload = "\n".join(":".join(str(y) for y in x) for x in params)
payload += "\n\n"
self.mouse_ws.send(payload)
return request_func
class SourceControl(WebOSControlBase):
COMMANDS = {
"list_sources": {
"uri": "ssap://tv/getExternalInputList",
"args": [],
"kwargs": {},
"payload": {},
"validation": standard_validation,
"return": lambda p: [InputSource(x) for x in p["devices"]],
},
"set_source": {
"uri": "ssap://tv/switchInput",
"args": [InputSource],
"kwargs": {},
"payload": {
"inputId": arguments(0, postprocess=lambda inp: inp["id"]),
},
"payload": {},
"validity": lambda p: p.pop("returnValue"),
"return": lambda p: p["appId"],
"subscription": True,
},
"close": {
"uri": "ssap://system.launcher/close",
"args": [dict],
"kwargs": {},
"payload": arguments(0),
"validation": standard_validation,
}
}
class InputControl(WebOSControlBase):
COMMANDS = {
"type": {
"uri": "ssap://com.webos.service.ime/insertText",
"args": [str],
"payload": {"text": arguments(0), "replace": 0}
},
"delete": {
"uri": "ssap://com.webos.service.ime/deleteCharacters",
"args": [int],
"payload": {"count": arguments(0)}
},
"enter": {"uri": "ssap://com.webos.service.ime/sendEnterKey"},
}
INPUT_COMMANDS = {
"move": {