Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
rdos-python
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Julien David
rdos-python
Commits
9731c18d
Commit
9731c18d
authored
4 years ago
by
Ismail Moumni
Browse files
Options
Downloads
Patches
Plain Diff
adding match json and init
parent
c4615797
No related branches found
Branches containing commit
No related tags found
1 merge request
!5
Wip adding tests and json functions
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
pckgclient/client.py
+92
-61
92 additions, 61 deletions
pckgclient/client.py
with
92 additions
and
61 deletions
pckgclient/client.py
+
92
−
61
View file @
9731c18d
#!/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
)
# Funct
io
n
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
)
r
aise
Exception
(
'
Dictionnary must match query Arguments
'
)
def
match_dict
(
bibl
io
:
dict
,
gen
:
dict
):
missing
=
[]
for
a
in
biblio
:
for
b
in
gen
:
if
a
!=
b
:
missing
.
append
(
a
)
r
eturn
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
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment