Commit 57d425f3 authored by YannGarcia's avatar YannGarcia
Browse files
parents d4d66f28 a83e280d
subscription_id,corr_id,address,callback,ue_event_criteria,resourceURL
...@@ -5,7 +5,7 @@ from datetime import datetime, time ...@@ -5,7 +5,7 @@ from datetime import datetime, time
class mec_database: class mec_database:
""" Private properties """ """ Private properties """
__path__ = "/Users/yanng/OneDrive/Documents/Python/Mec/data/" # To be updated according to the local settings __path__ = "/Users/yanng/Documents/workspace_titan/STF569_Mec/simu/data/" # To be updated according to the local settings
__subscribers__ = None __subscribers__ = None
__registered_list__ = None __registered_list__ = None
__zones__ = None __zones__ = None
...@@ -14,6 +14,7 @@ class mec_database: ...@@ -14,6 +14,7 @@ class mec_database:
__location_info__ = None __location_info__ = None
__cells__ = None __cells__ = None
__associated__ = None __associated__ = None
__subscribions__ = None
def __init__(self): def __init__(self):
""" Default ctor: Open Pandas database. """ """ Default ctor: Open Pandas database. """
...@@ -24,6 +25,7 @@ class mec_database: ...@@ -24,6 +25,7 @@ class mec_database:
self.__location_info__ = pd.DataFrame(pd.read_csv(self.__path__ + 'location_info.csv', index_col = 'accessPointId')) self.__location_info__ = pd.DataFrame(pd.read_csv(self.__path__ + 'location_info.csv', index_col = 'accessPointId'))
self.__cells__ = pd.DataFrame(pd.read_csv(self.__path__ + 'cells.csv', encoding = 'utf-8', index_col = 'cellId')) self.__cells__ = pd.DataFrame(pd.read_csv(self.__path__ + 'cells.csv', encoding = 'utf-8', index_col = 'cellId'))
self.__associated__ = pd.DataFrame(pd.read_csv(self.__path__ + 'associated.csv', encoding = 'utf-8', index_col = 'cellId')) self.__associated__ = pd.DataFrame(pd.read_csv(self.__path__ + 'associated.csv', encoding = 'utf-8', index_col = 'cellId'))
self.__subscriptions__ = pd.DataFrame(pd.read_csv(self.__path__ + 'subscriptions.csv', encoding = 'utf-8', index_col = 'subscription_id'))
#self.dump() #self.dump()
# End of __init__ # End of __init__
...@@ -36,10 +38,16 @@ class mec_database: ...@@ -36,10 +38,16 @@ class mec_database:
print("LocationInfo: ", self.__location_info__.head()) print("LocationInfo: ", self.__location_info__.head())
print("Cells: ", self.__cells__.head()) print("Cells: ", self.__cells__.head())
print("Associated: ", self.__associated__.head()) print("Associated: ", self.__associated__.head())
print("subscriptions: ", self.__subscribions__.head())
# End of dump # End of dump
def __to_accessPoint__(self, p_access_point, p_location): def __to_accessPoint__(self, p_access_point, p_location):
""" Build an AccessPointLocation Json message. """ """
Build an AccessPointLocation Json message.
Keyword arguments:
-- p_access_point: Access point identifier
-- p_location : Access point geographical location
"""
print(">>> __to_accessPoint__: ", p_access_point) print(">>> __to_accessPoint__: ", p_access_point)
print("__to_accessPoint__: location= ", p_location['latitude'][0]) print("__to_accessPoint__: location= ", p_location['latitude'][0])
i = 0.0 i = 0.0
...@@ -56,7 +64,11 @@ class mec_database: ...@@ -56,7 +64,11 @@ class mec_database:
# End of __to_accessPoint__ # End of __to_accessPoint__
def __to_zone__(self, p_zone): def __to_zone__(self, p_zone):
""" Build a Zones Json message. """ """
Build a Zones Json message.
Keyword arguments:
-- p_zone: Zone description
"""
print(">>> __to_zone__: ", p_zone) print(">>> __to_zone__: ", p_zone)
resp = "{\t\"zoneId\": \"" + p_zone[0] + "\",\t\"numberOfAccessPoints\": \"" + str(p_zone[1]) + "\",\t\"numberOfUnserviceableAccessPoints\": \"" + str(p_zone[2]) + "\",\t\"numberOfUsers\": \"" + str(p_zone[3]) + "\",\t\"resourceURL\": \"" + p_zone[4] + "\"}" resp = "{\t\"zoneId\": \"" + p_zone[0] + "\",\t\"numberOfAccessPoints\": \"" + str(p_zone[1]) + "\",\t\"numberOfUnserviceableAccessPoints\": \"" + str(p_zone[2]) + "\",\t\"numberOfUsers\": \"" + str(p_zone[3]) + "\",\t\"resourceURL\": \"" + p_zone[4] + "\"}"
print("__to_zone__: ", resp) print("__to_zone__: ", resp)
...@@ -79,6 +91,21 @@ class mec_database: ...@@ -79,6 +91,21 @@ class mec_database:
return resp return resp
# End of __to_ueIdentityTagInfo__ # End of __to_ueIdentityTagInfo__
def __to_subscriptions__(self, p_subscription):
""" Build the userTrackingSubscription response """
print(">>> __to_subscriptions__: ", p_subscription)
resp = "\t{\"userTrackingSubscription\": {\t\"clientCorrelator\": \"" + p_subscription[1] + "\",\t\"callbackReference\": {\"notifyURL\": \"" + p_subscription[3] + "\"},\t\"address\": \"" + p_subscription[2] + "\",\t\"userEventCriteria\" : ["
resp += "\"" + p_subscription[4][0] + "\""
i = 1
while i < len(p_subscription[4]):
resp += ",\"" + p_subscription[4][i] + "\""
i += 1
# End of 'while' statement
resp += "],\t\"resourceURL\":\"" + p_subscription[5] + "\"\t}}"
print("__to_subscriptions__: ", resp)
return resp
# End of __to_subscriptions__
def getSubscriberList(self, p_uri): def getSubscriberList(self, p_uri):
""" Build a SubscriberList Json message. """ """ Build a SubscriberList Json message. """
print(">>> getSubscriberList") print(">>> getSubscriberList")
...@@ -199,6 +226,43 @@ class mec_database: ...@@ -199,6 +226,43 @@ class mec_database:
return resp return resp
# End of method registerUEidentity # End of method registerUEidentity
def registerSubscription(self, p_json_msg, p_uri):
print(">>> registerSubscription: ", p_json_msg, "/", p_uri)
resp = None
subscription_id = "subscription" + p_json_msg["clientCorrelator"]
try:
# Check the record does not exist
self.__subscriptions__.loc[self.__subscriptions__['subscription_id'] == subscription_id]
print("registerSubscription: There is a subscription for ", subscription_id)
except KeyError:
#print("registerSubscription: Add new row in subscription")
resource_url = "http://example.com" + p_uri + "/" + subscription_id
row = pd.Series({ 'subscription_id': subscription_id, 'corr_id': p_json_msg["clientCorrelator"], 'address': p_json_msg["address"], 'callback': p_json_msg["callbackReference"]["notifyURL"], 'ue_event_criteria': p_json_msg["userEventCriteria"], 'resourceURL': resource_url })
#print("registerSubscription: row: ", row)
self.__subscriptions__ = self.__subscriptions__.append(row, ignore_index=True).reindex()
#print("registerSubscription: ", self.__subscriptions__.head())
r = tuple(self.__subscriptions__.loc[self.__subscriptions__['subscription_id'] == subscription_id].to_records())
#print("registerSubscription: New added row: ", r[0])
resp = self.__to_subscriptions__(r[0])
return resp
# End of registerSubscription
def unregisterSubscription(self, p_subscription_id):
print(">>> unregisterSubscription: ", p_subscription_id)
resp = None
try:
# Check the record exists
r = self.__subscriptions__.loc[self.__subscriptions__['subscription_id'] == p_subscription_id]
t = tuple(r.to_records())
print("unregisterSubscription: Find row: ", t)
resp = self.__to_subscriptions__(t[0])
# Remove it
self.__subscriptions__.drop(r.index)
except KeyError:
print("unregisterSubscription: No subscription for ", p_subscription_id)
return resp
# End of unregisterSubscription
def getBwAllocationAppInst(self, p_app_inst, p_ue_identity_tag): def getBwAllocationAppInst(self, p_app_inst, p_ue_identity_tag):
print(">>> getBwAllocationAppInst: ", p_app_inst, ", ", p_ue_identity_tag) print(">>> getBwAllocationAppInst: ", p_app_inst, ", ", p_ue_identity_tag)
resp = None resp = None
......
...@@ -8,7 +8,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -8,7 +8,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
# Handler for the GET requests # Handler for the GET requests
def do_GET(self): def do_GET(self):
print(">>> do_GET: ", self.path) print('>>> do_GET: ', self.path)
self.protocol_version = self.request_version self.protocol_version = self.request_version
# Check HTTP end_headers # Check HTTP end_headers
if self.__check_http_headers__() == False: if self.__check_http_headers__() == False:
...@@ -16,7 +16,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -16,7 +16,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
self.send_response(400, 'Bad Request') self.send_response(400, 'Bad Request')
self.send_header('Host', self.headers.get('Host')) self.send_header('Host', self.headers.get('Host'))
self.send_header('Authorization', self.headers.get('Authorization')) self.send_header('Authorization', self.headers.get('Authorization'))
self.send_header('Content-Type', "application/problem+json") self.send_header('Content-Type', 'application/problem+json')
l = len(resp) l = len(resp)
self.send_header('Content-Length', str(l)) self.send_header('Content-Length', str(l))
self.end_headers() self.end_headers()
...@@ -24,7 +24,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -24,7 +24,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
return return
resp, content_type = self.__process__() resp, content_type = self.__process__()
print("do_GET: resp= ", resp, ", Content_Type= ", content_type) print('do_GET: resp= ', resp, ', Content_Type= ', content_type)
if (resp == None): if (resp == None):
self.send_response(404, 'Not Found') self.send_response(404, 'Not Found')
self.send_header('Host', self.headers.get('Host')) self.send_header('Host', self.headers.get('Host'))
...@@ -61,7 +61,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -61,7 +61,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
self.send_response(400, 'Bad Request') self.send_response(400, 'Bad Request')
self.send_header('Host', self.headers.get('Host')) self.send_header('Host', self.headers.get('Host'))
self.send_header('Authorization', self.headers.get('Authorization')) self.send_header('Authorization', self.headers.get('Authorization'))
self.send_header('Content-Type', "application/problem+json") self.send_header('Content-Type', 'application/problem+json')
l = len(resp) l = len(resp)
self.send_header('Content-Length', str(l)) self.send_header('Content-Length', str(l))
self.end_headers() self.end_headers()
...@@ -69,7 +69,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -69,7 +69,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
return return
resp, content_type = self.__process__() resp, content_type = self.__process__()
print("do_POST: resp= ", resp, ", Content_Type= ", content_type) print('do_POST: resp= ', resp, ', Content_Type= ', content_type)
if (resp == None): if (resp == None):
self.send_response(404, 'Not Found') self.send_response(404, 'Not Found')
self.send_header('Host', self.headers.get('Host')) self.send_header('Host', self.headers.get('Host'))
...@@ -84,6 +84,8 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -84,6 +84,8 @@ class myHandler(http.server.BaseHTTPRequestHandler):
self.send_response(403, 'Forbidden') self.send_response(403, 'Forbidden')
elif resp.find('Bad Request') != -1: elif resp.find('Bad Request') != -1:
self.send_response(400, 'Bad Request') self.send_response(400, 'Bad Request')
elif resp.find('userTrackingSubscription') != -1:
self.send_response(201, 'Created')
else: else:
self.send_response(200, 'OK') self.send_response(200, 'OK')
self.send_header('Host', self.headers.get('Host')) self.send_header('Host', self.headers.get('Host'))
...@@ -98,14 +100,14 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -98,14 +100,14 @@ class myHandler(http.server.BaseHTTPRequestHandler):
# Check HTTP headers # Check HTTP headers
def __check_http_headers__(self): def __check_http_headers__(self):
print (">>> __check_http_headers__") print('>>> __check_http_headers__')
result = True result = True
host = self.headers.get('Host') host = self.headers.get('Host')
if host == None: if host == None:
print("__check_http_headers__: Failed to parse 'Host' header") print("__check_http_headers__: Failed to parse Host header")
result = False result = False
content_type = self.headers.get('Content-Type') content_type = self.headers.get('Content-Type')
if content_type != "application/json": if content_type != 'application/json':
print("__check_http_headers__: Failed to parse 'Content-Type' header") print("__check_http_headers__: Failed to parse 'Content-Type' header")
result = False result = False
auth = self.headers.get('Authorization') auth = self.headers.get('Authorization')
...@@ -118,9 +120,9 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -118,9 +120,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
# Process the request # Process the request
def __process__(self): def __process__(self):
s = self.path.split('/') s = self.path.split('/')
print (">>> __process__: ", s) print('>>> __process__: ', s)
if s[1] != 'exampleAPI': if s[1] != 'exampleAPI':
return None, "application/json" return None, 'application/json'
# TODO Check HTTP headers # TODO Check HTTP headers
if s[2] == 'location' and ((s[3] == 'v1') or (s[3] == 'v2')): if s[2] == 'location' and ((s[3] == 'v1') or (s[3] == 'v2')):
return self.__process__location__api__(s) return self.__process__location__api__(s)
...@@ -131,14 +133,14 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -131,14 +133,14 @@ class myHandler(http.server.BaseHTTPRequestHandler):
elif s[2] == 'bwm' and ((s[3] == 'v1') or (s[3] == 'v2')): elif s[2] == 'bwm' and ((s[3] == 'v1') or (s[3] == 'v2')):
return self.__process__bwm__api__(s) return self.__process__bwm__api__(s)
else: else:
return None, "application/json" return None, 'application/json'
# End of __process__ # End of __process__
# Process the LocationAPI request # Process the LocationAPI request
def __process__location__api__(self, p_split): def __process__location__api__(self, p_split):
print (">>> __process__location__api__: ", p_split) print (">>> __process__location__api__: ", p_split)
resp = None resp = None
content_type = "application/json" content_type = 'application/json'
if p_split[4].startswith('users'): # E.g. users?zoneId=zone01 if p_split[4].startswith('users'): # E.g. users?zoneId=zone01
s = p_split[4].split('?') s = p_split[4].split('?')
if s.__len__() == 1: # Users list requested if s.__len__() == 1: # Users list requested
...@@ -169,6 +171,20 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -169,6 +171,20 @@ class myHandler(http.server.BaseHTTPRequestHandler):
resp = "{\"Unsupported " + p_split[5] + " request\"}" resp = "{\"Unsupported " + p_split[5] + " request\"}"
else: else:
resp = "{\"Unsupported " + p_split[4] + " request\"}" resp = "{\"Unsupported " + p_split[4] + " request\"}"
elif p_split[4] == 'subscriptions':
if p_split.__len__() == 6:
# Extract the body if any
body = None
content_len = int(self.headers.get('Content-Length'))
if (content_len != 0):
body = self.rfile.read(content_len)
json_msg = self.__decode__json__body__(body)
if (json_msg == None):
resp = "{\"problemDetails\": {\t\"type\": \"Body processing not supported\",\t\"title\": \"UElocationAPI\",\t\"status\": 400,\t\"detail\": \"Unknown request\",\t\"instance\": \"string\"}}"
else:
resp = self.__db__.registerSubscription(json_msg, self.path)
elif p_split.__len__() == 7:
resp = self.__db__.unregisterSubscription(p_split[6])
else: else:
resp = "{\"Unsupported " + p_split[4] + " request\"}" resp = "{\"Unsupported " + p_split[4] + " request\"}"
...@@ -180,7 +196,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -180,7 +196,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
def __process__ue__identity__api__(self, p_split): def __process__ue__identity__api__(self, p_split):
print (">>> __process__ue__identity__api__: ", p_split) print (">>> __process__ue__identity__api__: ", p_split)
resp = None resp = None
content_type = "application/json" content_type = 'application/json'
if p_split[4] == 'appInst98': # Used for unknown application, e.g. TC_MEC_PLAT_UETAG_003_BI if p_split[4] == 'appInst98': # Used for unknown application, e.g. TC_MEC_PLAT_UETAG_003_BI
resp = "{\"problemDetails\": {\t\"type\": \"Not Authorized\",\t\"title\": \"UEidentityAPI\",\t\"status\": 403,\t\"detail\": \"Forbidden\",\t\"instance\": \"AppInst98\"}}" resp = "{\"problemDetails\": {\t\"type\": \"Not Authorized\",\t\"title\": \"UEidentityAPI\",\t\"status\": 403,\t\"detail\": \"Forbidden\",\t\"instance\": \"AppInst98\"}}"
else: else:
...@@ -206,12 +222,12 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -206,12 +222,12 @@ class myHandler(http.server.BaseHTTPRequestHandler):
resp = self.__db__.getUEidentityTagInfo(p_split[4], s[1]) resp = self.__db__.getUEidentityTagInfo(p_split[4], s[1])
if (resp == None): if (resp == None):
resp = "{\"problemDetails\": {\t\"type\": \"Not Found\",\t\"title\": \"UEidentityAPI\",\t\"status\": 404,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}" resp = "{\"problemDetails\": {\t\"type\": \"Not Found\",\t\"title\": \"UEidentityAPI\",\t\"status\": 404,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}"
content_type = "application/problem+json" content_type = 'application/problem+json'
if (resp == None): if (resp == None):
resp = "{\"problemDetails\": {\t\"type\": \"Bad Request\",\t\"title\": \"UEidentityAPI\",\t\"status\": 400,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}" resp = "{\"problemDetails\": {\t\"type\": \"Bad Request\",\t\"title\": \"UEidentityAPI\",\t\"status\": 400,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}"
content_type = "application/problem+json" content_type = 'application/problem+json'
elif resp.find('problemDetails') != -1: elif resp.find('problemDetails') != -1:
content_type = "application/problem+json" content_type = 'application/problem+json'
print ("<<< __process__ue__identity__api__: ", resp, ", ", content_type) print ("<<< __process__ue__identity__api__: ", resp, ", ", content_type)
return resp, content_type return resp, content_type
...@@ -219,16 +235,16 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -219,16 +235,16 @@ class myHandler(http.server.BaseHTTPRequestHandler):
# Process the RnisAPI request # Process the RnisAPI request
def __process__rnis__api__(self, p_split): def __process__rnis__api__(self, p_split):
print (">>> __process__rnis__api__: ", p_split) print ('>>> __process__rnis__api__: ', p_split)
resp = None resp = None
content_type = "application/json" content_type = 'application/json'
if p_split[4].startswith('subscriptions'): if p_split[4].startswith('subscriptions'):
if p_split.__len__() == 6: if p_split.__len__() == 6:
if p_split[5] == '': if p_split[5] == '':
resp = self.__db__.getSubscriptionLinkList(self.path) resp = self.__db__.getSubscriptionLinkList(self.path)
if (resp == None): if (resp == None):
resp = "{\"problemDetails\": {\t\"type\": \"Not supported\",\t\"title\": \"RnisAPI\",\t\"status\": 400,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}" resp = "{\"problemDetails\": {\t\"type\": \"Not supported\",\t\"title\": \"RnisAPI\",\t\"status\": 400,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}"
content_type = "application/problem+json" content_type = 'application/problem+json'
print ("<<< __process__rnis__api__: ", resp, ", ", content_type) print ("<<< __process__rnis__api__: ", resp, ", ", content_type)
return resp, content_type return resp, content_type
...@@ -238,7 +254,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -238,7 +254,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
def __process__bwm__api__(self, p_split): def __process__bwm__api__(self, p_split):
print (">>> __process__bwm__api__: ", p_split) print (">>> __process__bwm__api__: ", p_split)
resp = None resp = None
content_type = "application/json" content_type = 'application/json'
if p_split[4].startswith('bw_allocations'): # E.g. bw_allocation?app_instance_id=InstApp01 if p_split[4].startswith('bw_allocations'): # E.g. bw_allocation?app_instance_id=InstApp01
s = p_split[4].split('?') s = p_split[4].split('?')
if s.__len__() == 1: # ue_identity_tag_info, POST if s.__len__() == 1: # ue_identity_tag_info, POST
...@@ -251,7 +267,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -251,7 +267,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
json_msg = self.__decode__json__body__(body) json_msg = self.__decode__json__body__(body)
if (json_msg == None): if (json_msg == None):
resp = "{\"problemDetails\": {\t\"type\": \"Body processing not supported\",\t\"title\": \"BwManagementAPI\",\t\"status\": 400,\t\"detail\": \"Unknown request\",\t\"instance\": \"string\"}}" resp = "{\"problemDetails\": {\t\"type\": \"Body processing not supported\",\t\"title\": \"BwManagementAPI\",\t\"status\": 400,\t\"detail\": \"Unknown request\",\t\"instance\": \"string\"}}"
content_type = "application/problem+json" content_type = 'application/problem+json'
else: else:
resp = self.__db__.bwAllocation(json_msg) resp = self.__db__.bwAllocation(json_msg)
elif s.__len__() == 2: # E.g. app_instance_id=InstApp01 elif s.__len__() == 2: # E.g. app_instance_id=InstApp01
...@@ -260,7 +276,7 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -260,7 +276,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
resp = self.__db__.getBwAllocationAppInst(p_split[4], s[1]) resp = self.__db__.getBwAllocationAppInst(p_split[4], s[1])
if (resp == None): if (resp == None):
resp = "{\"problemDetails\": {\t\"type\": \"Not supported\",\t\"title\": \"BwManagementAPI\",\t\"status\": 400,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}" resp = "{\"problemDetails\": {\t\"type\": \"Not supported\",\t\"title\": \"BwManagementAPI\",\t\"status\": 400,\t\"detail\": \"Wrong parameters\",\t\"instance\": \"string\"}}"
content_type = "application/problem+json" content_type = 'application/problem+json'
print ("<<< __process__bwm__api__: ", resp, ", ", content_type) print ("<<< __process__bwm__api__: ", resp, ", ", content_type)
return resp, content_type return resp, content_type
...@@ -268,11 +284,15 @@ class myHandler(http.server.BaseHTTPRequestHandler): ...@@ -268,11 +284,15 @@ class myHandler(http.server.BaseHTTPRequestHandler):
# Decode a Json HTTP body message # Decode a Json HTTP body message
def __decode__json__body__(self, p_body): def __decode__json__body__(self, p_body):
print(">>> __decode__json__body__: ", p_body)
json_msg = json.loads(p_body) json_msg = json.loads(p_body)
print("__decode__json__body__: ", type(json_msg)) print("__decode__json__body__: ", type(json_msg))
if ("ueIdentityTags" in json_msg.keys()) == False: print("__decode__json__body__: ", json_msg.keys())
return None if ("ueIdentityTags" in json_msg.keys()) == True:
return json_msg.get("ueIdentityTags")[0] return json_msg.get("ueIdentityTags")[0]
elif ("userTrackingSubscription" in json_msg.keys()) == True:
return json_msg.get("userTrackingSubscription")
return None
# End of __decode__json__body__ # End of __decode__json__body__
# End of class SimpleHTTPRequestHandler # End of class SimpleHTTPRequestHandler
...@@ -30,7 +30,7 @@ if __name__ == '__main__': ...@@ -30,7 +30,7 @@ if __name__ == '__main__':
# Wait forever for incoming http requests in background # Wait forever for incoming http requests in background
#server.serve_forever() #server.serve_forever()
threading.Thread(target=server.serve_forever).start() threading.Thread(target=server.serve_forever).start()
# Use keybord entries to trigger notifications # Use keybord entries to trigBger notifications
while exit == False: while exit == False:
ch = getch() ch = getch()
if ch == b'\x03': if ch == b'\x03':
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment