Skip to content
Snippets Groups Projects

Adding json functions

Merged Ismail Moumni requested to merge Adding-Json-FUNCTIONS into master
Compare and
5 files
+ 197
33
Compare changes
  • Side-by-side
  • Inline
Files
5
+ 136
23
# Authors : Julien David & Ismail MOUMNI
# authors: Julien DAVID & Ismail MOUMNI
import socket
import json
import os
import sys
import database.database as db
sys.path.append(os.path.realpath('../softwares/'))
# SERVER PORT
__RDOS_Port__ = 9393
# Creating Socket IP4 TCP
def server_conn(address, PORT):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as serv:
# BINDING
serv.bind((address, PORT))
# Listening to 1 CLient
serv.listen()
# Accepting the connection from client and getting client IP
conn, addr = serv.accept()
with conn:
# Sending
conn.send(bytes("Bonjour !!", "utf-8"))
print('Connexion acceptée depuis l IP : ', addr)
# Receiving Data from Client
data = conn.recv(1024)
print(data)
serv.close()
__RDOS_Dict__ = {}
# tools List
__RDOS_Tool__ = []
class RdosServer:
# Function server_conn creates a socket and listens on port 9393
# Function input address : SERVER IP ADRESS & Port server Port
# Function output query send from client to server
def server_conn(address, PORT):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as serv:
serv.bind((address, PORT))
# Listening to 5 CLients
serv.listen(5)
# accepting the connection from client and getting client IP
conn, addr = serv.accept()
while True:
if conn:
print('Connexion acceptee depuis l IP : ', addr)
# Receiving Data from Client
data = conn.recv(4096)
query = (json.loads(data.decode('utf-8')))
print(query)
match = verif_param(query)
if match == query:
print("ok")
conn.send(bytes(json.dumps(match), "utf-8"))
else:
print('Erreur query : ')
conn.send(bytes(json.dumps(match), "utf-8"))
# Function query_valwid matches the query send from client side
# with the the parameter dict
# Function input dictionary from client
# Function output boolean true if match else False
def query_valid(data: dict):
if 'parameters' in data:
if (data['parameters'] != '') & (len(data) <= 2):
return True
else:
return False
# Function send_param_client send a Dict containing parameters
# needed to add a query to db
# Function exmaple s = {"ARGUMENTS","Tools":"List of Tools" }
# Function input takes dictionary and a list of tools
# Function output returns a new dictionary containing arguments
# # for db query and list of tools
def send_param_client(__RDOS_Dict__: dict, __RDOS_Tools__: list):
req = db.getParameters()
return req
# Function json_loads changes a json file into a Dict
# Function json_loads returns a dictionary
def json_to_dict(js):
data = json.loads(js)
return data
# Function db_req sends a request to get parameters of tools from database
# Function takes a dictionary for input
# Function return a Dict containing tool parameters and default parameters
def db_req(tool: dict):
tool_dict = db.getParameters(tool)
return tool_dict
# Function match_query_dict matches two dictionaries
# Function input takes 2 dictionaries to match
# Function output return trur if dictionaries matches else raise a value error exception
def match_query_dict(biblio: dict, data: dict):
if biblio is not None and data is not None:
return biblio.keys() == data.keys()
else:
raise ValueError("Error Dict Values ")
# Function match_generator_dict Matches dictionary with a list
# Function input 2 arguments dictionary and query from Server
# Function output true if dictionary keys match list elements else false
def match_generator_dict(biblio: dict, Genereator: list):
for a in Genereator:
for b in biblio.keys():
if a != b:
return False
return True
# Function verif_param verifies json send from client to server by matching it with database query
# Function input takes a dictionary
# Function output returns query if it matches with database query keys if not it raises an error
def verif_param(data: dict):
tool = data.keys().strip('[]')
s = db.getParameters(data['tool'])
parameter = {}
query = {}
if s is not None:
gen = s[0]
gen_default = s[1]
parameter = gen_default
query = data.get(tool)
if match_query_dict(gen.get(tool), query):
for a in query:
if query[a] == "":
print(query[a])
query[a] = parameter.get(a)
return query
else:
raise Exception("Query Doesn't match")
else:
raise Exception("Error Database")
'''
if __name__ == '__main__':
tool = 'Regal'
# sa = ({'Regal': {'size': '', 'asize': '', 'outputf': '', 'number': '', 'comp': '', 'min': '', 'con': ''}}, {'size': '10', 'asize': '2', 'outputf': '', 'number': '1', 'comp': 'yes', 'min': '', 'con': ''})
# print(verif_param(d, data))
s = {'Regal': {'size': 'qsd', 'asize': '', 'outputf': 'qsd', 'number': 'ss', 'comp': 'qsd', 'min': 'sqsd', 'con': 'qsd'}}
# print(s.get('Regal'))
print(s.keys())
data_test1 = '{"parameters":"request"}'
data_load = json.loads(data_test1)
print(query_valid(data_load) is True)
'''
Loading