Skip to content
Snippets Groups Projects
Commit 9731c18d authored by Ismail Moumni's avatar Ismail Moumni
Browse files

adding match json and init

parent c4615797
No related branches found
No related tags found
1 merge request!5Wip adding tests and json functions
#!/usr/bin/python3
#!/usr/bin/env python3
# Authors : Julien DAVID & Ismail MOUMNI
import socket
import json
__RDOS_Port__ = 9393
__RDOS_Host__ = '127.0.0.1'
# List to save REQUEST Parameters send FROM SERVER for query Match TODO
__RDOS_Gen__ = []
# List to save REQUEST Parameters send FROM SERVER for query Match
__RDOS_Req__ = {"parameters": "request"}
__RDOS_Gen__ = {}
def client_init(host, port):
s = server_conn(host, port)
s.send(bytes(json.dumps((__RDOS_Req__)), "utf-8"))
data = s.recv(4096)
print(data)
query = (json.loads(data.decode('utf-8')))
print("Data reçu : %s", query)
return data
class CLIENT():
def dict_to_binary(the_dict):
str = json.dumps(the_dict)
binary = ' '.join(format(ord(letter), 'b') for letter in str)
return binary
# Function server_conn creates a socket and connects it to server
# Function server_conn take No arguments
# Function returns a socket after making connexion
def server_conn(host, port):
socket.setdefaulttimeout(1.0)
serve_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
serve_sock.connect((host, port))
return serve_sock
except socket.error as exc:
print("%s" % exc)
# send_mess Function that returns a message from a server to a client connexion
# Function takes 2 parameters (Socket & Message )
# Function Output message send from server
def send_message(s: socket, message: str):
data = ""
try:
if len(message) != 0:
s.send(bytes(message, "utf-8"))
data = s.recv(1024)
return data
except ValueError as msg:
print("Erreur requete Vide " % msg)
# Function client_init connects to server and sends JSON Parameters needed
# Function input Host : Server IP - Port : Server Port
# Function output returns JSON from server side contanings parameters
def __init__(self):
socket = server_conn(__RDOS_Host__, __RDOS_Port__)
print("Connexion to socket : ")
data = json.dumps((__RDOS_Req__))
send_st(socket, data)
recv = socket.recv(4096)
print("Données reçu : ", recv)
query = (json.loads(recv.decode('utf-8')))
__RDOS_Gen__ = query
print(__RDOS_Gen__)
# Function run_client connects client to server by socket
......@@ -63,32 +37,28 @@ def run_client(Host, Port, message: str):
print("Starting connexion to server on Port :", Port)
recv = send_message(s, message)
print("Message ENVOYE : ", recv)
return recv
except socket.error as msg:
print("Erreur de Connexion vers le client:" % msg)
# Function dict_to_JSON transforms DICTIONNARY TO Json String
# Function input Dictionnary
# Function OUTPUT Json string Format
def dict_to_JSON(biblio: dict):
if match_generator_dict(biblio, __RDOS_Gen__):
return json.dumps(biblio, sort_keys=True)
raise Exception('Dictionnary must match query Arguments')
def match_dict(biblio: dict, gen: dict):
missing = []
for a in biblio:
for b in gen:
if a != b:
missing.append(a)
return missing
# Function match_generator_dict Matches Dictionnary with a list
# Function input 2 arguments Dictionnary and query from Server
# Function output true if dictionnary keys match list elements otherwise 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 send_st sends to socket data bytes
# Function input socket and data
def send_st(s, data):
s.send(bytes(data, "utf-8"))
# Function send_json_server sends dictionnary contaning Data in JSON Format
# Function takes a HOST Port TO connect with server and Biblio a Dictionnary
# Function takes a HOST Port TO connect with server and a Dictionnary
# Function prints Data send
def send_js_server(Host, Port, biblio: dict):
if not biblio:
......@@ -99,4 +69,65 @@ def send_js_server(Host, Port, biblio: dict):
print("Data send to server :", data)
client_init(__RDOS_Host__, __RDOS_Port__)
# send_mess Function that returns a message from a server to a client
# Function takes 2 parameters (Socket & Message )
# Function Output message send from server
def send_message(s: socket, message: dict):
data = ""
try:
if len(message) != 0:
if match_generator_dict(message, __RDOS_Gen__):
try:
s.send(bytes(message, "utf-8"))
data = s.recv(1024)
return data
except Exception:
match = match_dict(message, __RDOS_Gen__)
print("Missing parameters:" % match)
except ValueError as msg:
print("Erreur requete Vide " % msg)
# Function server_conn creates a socket and connects it to server
# Function server_conn take No arguments
# Function returns a socket after making connexion
def server_conn(host, port):
serve_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
serve_sock.connect((host, port))
return serve_sock
except socket.error as exc:
print("%s" % exc)
# Function match_generator_dict Matches Dictionnary with a list
# Function input 2 arguments Dictionnary and query from Server
# Function output true if dictionnary 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 dict_to_JSON transforms DICTIONNARY TO Json String
# Function input Dictionnary
# Function OUTPUT Json string Format
def dict_to_JSON(biblio: dict):
if (match_generator_dict(biblio, __RDOS_Gen__)):
return json.dumps(biblio)
raise Exception('Dictionnary must match query Arguments')
# Function help prints the generators parameters
# Function returns generator parameters
def help():
print('Generator parameters :')
for a in __RDOS_Gen__:
print("Parameter: {}, Value : {}".format(a, __RDOS_Gen__[a]))
if __name__ == '__main__':
cl = CLIENT()
help()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment