aboutsummaryrefslogtreecommitdiff
path: root/phpipam/resources.py
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2020-12-11 00:23:25 +0100
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2020-12-11 00:23:25 +0100
commit17bd5b60a6d1445d208c1486c5b937c7f7881154 (patch)
tree691381c4e455e1a8a9599d0da8540b7f7b81b6d2 /phpipam/resources.py
parentc22aedfb52c291ab791c3dfe6209c69047157cac (diff)
downloadpython-phpipam-17bd5b60a6d1445d208c1486c5b937c7f7881154.tar.gz
rework
Diffstat (limited to 'phpipam/resources.py')
-rwxr-xr-xphpipam/resources.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/phpipam/resources.py b/phpipam/resources.py
new file mode 100755
index 0000000..597560a
--- /dev/null
+++ b/phpipam/resources.py
@@ -0,0 +1,66 @@
+from .backend import phpipamBackend
+
+resource_types = {
+ 'sections' : {
+ 'getSubnets':{
+ 'method':'GET',
+ 'request':'/sections/{object_id}/subnets',
+ }
+ },
+ 'subnets' : {
+ 'search':{
+ 'method':'GET',
+ 'request':'/subnets/search/{search}'
+ },
+ 'getIP':{
+ 'method':'GET',
+ 'requests':'/subnets/'
+ }
+ },
+ 'addresses' : {
+ },
+ 'devices' : {
+ },
+}
+
+class invalidResourceException(Exception):
+ pass
+
+class invalidResourceOperationException(Exception):
+ pass
+
+class phpipamResourceFunction:
+ def __init__(self, backend, resource, function):
+ if not function in resource_types[resource]:
+ raise invalidResourceOperationException(f'Operation {function} is not defined for {resource}.')
+
+ self._backend = backend
+ self._resource = resource
+ self._function = resource_types[resource][function]
+
+ def __call__(self, **kwargs):
+ if 'data' in kwargs:
+ data = kwargs['data']
+ else:
+ data = {}
+
+ return self._backend.request( self._function['method'], self._function['request'].format(**kwargs), data=data )
+
+class phpipamResource:
+ def __init__(self, backend, resource):
+ if not resource in resource_types:
+ raise invalidResourceException(f'Invalid resource "{resource}"')
+
+ self._type = resource
+ self._backend = backend
+
+ def __getattr__(self, attr):
+ return phpipamResourceFunction(self._backend, self._type, attr)
+
+ def get(self):
+ """List of all objects"""
+ return self._backend.request('GET', f'/{self._type}')
+
+ def byID(self, object_id):
+ """object identified by object_id : str"""
+ return self._backend.request('GET', f'/{self._type}/{object_id}')