diff options
author | Marek Siarkowicz <mareksiarkowicz@gmail.com> | 2015-06-14 23:05:22 +0200 |
---|---|---|
committer | Marek Siarkowicz <mareksiarkowicz@gmail.com> | 2015-06-14 23:05:22 +0200 |
commit | 1bae288e1e03210b25f7159adb43581f1d18a353 (patch) | |
tree | 613f583b08343f4bde3534a8ef9be7b9101a37a8 | |
parent | 4c8ce6673e2efe96a36a2af2b774b3e43cc4a89c (diff) | |
download | pyParrotZikTCP-1bae288e1e03210b25f7159adb43581f1d18a353.tar.xz pyParrotZikTCP-1bae288e1e03210b25f7159adb43581f1d18a353.zip |
Restrict methods.
-rw-r--r-- | resource_manager.py | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/resource_manager.py b/resource_manager.py index 1a6e224..b343807 100644 --- a/resource_manager.py +++ b/resource_manager.py @@ -19,6 +19,7 @@ class ResourceManagerBase(object): def fetch(self, resource): assert resource in self.resources, 'Unknown resource {}'.format(resource) + assert 'get' in self.resources[resource], 'Unhandled method' message = ParrotProtocol.getRequest(resource + '/get') result = self.send_message(message) self.resource_values[resource] = result @@ -26,18 +27,21 @@ class ResourceManagerBase(object): def toggle_on(self, resource): assert resource in self.resources, 'Unknown resource {}'.format(resource) + assert 'enable' in self.resources[resource], 'Unhandled method' message = ParrotProtocol.getRequest(resource + '/enable') self.send_message(message) self.fetch(resource) def toggle_off(self, resource): assert resource in self.resources, 'Unknown resource {}'.format(resource) + assert 'disable' in self.resources[resource], 'Unhandled method' message = ParrotProtocol.getRequest(resource + '/disable') self.send_message(message) self.fetch(resource) def set(self, resource, arg): assert resource in self.resources, 'Unknown resource {}'.format(resource) + assert 'set' in self.resources[resource], 'Unhandled method' message = ParrotProtocol.setRequest(resource + '/set', str(arg).lower()) self.send_message(message) self.fetch(resource) @@ -78,7 +82,7 @@ class ResourceManagerBase(object): class GenericResourceManager(ResourceManagerBase): resources = { - '/api/software/version', + '/api/software/version': ['get'], } def __init__(self, sock): @@ -105,31 +109,31 @@ class GenericResourceManager(ResourceManagerBase): class Version1ResourceManager(ResourceManagerBase): resources = { - '/api/software/version', - '/api/system/battery', - '/api/bluetooth/friendlyname', - '/api/system/auto_connection/enabled', - '/api/system/anc_phone_mode/enabled', - '/api/audio/specific_mode/enabled', - '/api/audio/sound_effect/enabled', - '/api/audio/noise_cancellation/enabled', + '/api/software/version': ['get'], + '/api/system/battery': ['get'], + '/api/bluetooth/friendlyname': ['get'], + '/api/system/auto_connection/enabled': ['get', 'set'], + '/api/system/anc_phone_mode/enabled': ['get', 'set'], + '/api/audio/specific_mode/enabled': ['get', 'set'], + '/api/audio/sound_effect/enabled': ['get', 'set'], + '/api/audio/noise_cancellation/enabled': ['get', 'set'], } class Version2ResourceManager(ResourceManagerBase): resources = { - '/api/software/version', - '/api/system/battery', - '/api/system/pi', - '/api/bluetooth/friendlyname', - '/api/system/auto_connection/enabled', - '/api/system/anc_phone_mode/enabled', - '/api/flight_mode', - '/api/audio/sound_effect/enabled', - '/api/audio/sound_effect/room_size', - '/api/audio/sound_effect/angle', - '/api/audio/noise', - '/api/audio/noise_control', - '/api/audio/noise_control/enabled', - '/api/audio/track/metadata', + '/api/software/version': ['get'], + '/api/system/battery': ['get'], + '/api/system/pi': ['get'], + '/api/bluetooth/friendlyname': ['get'], + '/api/system/auto_connection/enabled': ['get', 'set'], + '/api/system/anc_phone_mode/enabled': ['get', 'set'], + '/api/flight_mode': ['get', 'enable', 'disable'], + '/api/audio/sound_effect/enabled': ['get', 'set'], + '/api/audio/sound_effect/room_size': ['get', 'set'], + '/api/audio/sound_effect/angle': ['get', 'set'], + '/api/audio/noise': ['get'], + '/api/audio/noise_control': ['get'], + '/api/audio/noise_control/enabled': ['get', 'set'], + '/api/audio/track/metadata': ['get'], } |