summaryrefslogtreecommitdiffstats
path: root/src/restRequest.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/restRequest.py')
-rw-r--r--src/restRequest.py165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/restRequest.py b/src/restRequest.py
new file mode 100644
index 0000000..c9d4881
--- /dev/null
+++ b/src/restRequest.py
@@ -0,0 +1,165 @@
+#
+# Copyright (C) 2020 Soleta Networks <info@soleta.eu>
+#
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero General Public License as published by the
+# Free Software Foundation, version 3.
+#
+
+import email
+from io import StringIO
+import json
+
+class restRequest:
+ def __init__(self):
+ self.requestLine = None
+ self.headersAlone = None
+ self.headers = None
+ self.host = None
+ self.contentType = None
+ self.contentLen = None
+ self.operation = None
+ self.URI = None
+ self.run = None
+ self.partition = None
+ self.disk = None
+ self.cache = None
+ self.cache_size = None
+ self.partition_setup = None
+ self.name = None
+ self.repo = None
+ self.type = None
+ self.profile = None
+ self.id = None
+ self.echo = None
+ self.code = None
+
+ def parser(self,data):
+ self.requestLine, self.headersAlone = data.split('\n', 1)
+ self.headers = email.message_from_file(StringIO(self.headersAlone))
+
+ if 'Host' in self.headers.keys():
+ self.host = self.headers['Host']
+
+ if 'Content-Type' in self.headers.keys():
+ self.contentType = self.headers['Content-Type']
+
+ if 'Content-Length' in self.headers.keys():
+ self.contentLen = int(self.headers['Content-Length'])
+
+ if (not self.requestLine == None or not self.requestLine == ''):
+ self.operation = self.requestLine.split('/', 1)[0]
+ self.URI = self.requestLine.split('/', 1)[1]
+
+ if not self.contentLen == 0:
+ msgs = self.headersAlone.rstrip().split('\n')
+ body = msgs[len(msgs) - 1]
+ try:
+ json_param = json.loads(body)
+ except ValueError as e:
+ print ("Error: Json message incomplete")
+ return
+
+ if "run" in body:
+ self.run = json_param["run"]
+ try:
+ self.echo = json_param["echo"]
+ except:
+ pass
+
+ if "disk" in body:
+ self.disk = json_param["disk"]
+
+ if "partition" in body:
+ if not "partition_setup" in body:
+ self.partition = json_param["partition"]
+
+ if "cache" in body:
+ self.cache = json_param["cache"]
+
+ if "cache_size" in body:
+ self.cache_size = json_param["cache_size"]
+
+ if "partition_setup" in body:
+ self.partition_setup = json_param["partition_setup"]
+
+ if "name" in body:
+ self.name = json_param["name"]
+
+ if "repository" in body:
+ self.repo = json_param["repository"]
+
+ if "type" in body:
+ self.type = json_param["type"]
+
+ if "profile" in body:
+ self.profile = json_param["profile"]
+
+ if "id" in body:
+ self.id = json_param["id"]
+
+ if "code" in body:
+ self.code = json_param["code"]
+
+ def getHeaderLine(self):
+ return self.headersAlone
+
+ def getRequestLine(self):
+ return self.requestLine
+
+ def getHeaderParsed(self):
+ return self.headers
+
+ def getHost(self):
+ return self.host
+
+ def getContentType(self):
+ return self.contentType
+
+ def getContentLen(self):
+ return self.contentLen
+
+ def getRequestOP(self):
+ return self.operation
+
+ def getURI(self):
+ return self.URI
+
+ def getrun(self):
+ return self.run
+
+ def getDisk(self):
+ return self.disk
+
+ def getPartition(self):
+ return self.partition
+
+ def getCache(self):
+ return self.cache
+
+ def getCacheSize(self):
+ return self.cache_size
+
+ def getPartitionSetup(self):
+ return self.partition_setup
+
+ def getName(self):
+ return self.name
+
+ def getRepo(self):
+ return self.repo
+
+ def getType(self):
+ return self.type
+
+ def getProfile(self):
+ return self.profile
+
+ def getId(self):
+ return self.id
+
+ def getEcho(self):
+ return self.echo
+
+ def getCode(self):
+ return self.code