Skip to content

Commit 00e48c0

Browse files
committed
Finished writing set game
The users no longer have access to the server but to a new dictionary whice is not in the server
1 parent 659ee32 commit 00e48c0

File tree

5 files changed

+48
-31
lines changed

5 files changed

+48
-31
lines changed

client.py

+24-16
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def __init__(
4141
s,
4242
buff_size,
4343
base_directory,
44-
server
44+
common
4545
):
4646
"""Client of Server, handle everything by itself
4747
Arguements:
@@ -53,7 +53,7 @@ def __init__(
5353
self._socket = s
5454
self._buff_size = buff_size
5555
self._base_directory = base_directory
56-
self._server = server
56+
self.common = common
5757

5858
self._file = None
5959
self._game = None
@@ -101,13 +101,15 @@ def _test_http_and_creat_objects(self):
101101
service_function = SERVICES_LIST[uri_path]
102102

103103
# dictionary of the query of uri
104+
query = urlparse.parse_qs((urlparse.urlparse(uri)))
104105
if method == "GET":
105106
dic_argument = urlparse.parse_qs(
106-
urlparse.urlparse(uri).query) + {"server": self._server}
107+
urlparse.urlparse(uri).query) + {"common": self._common,
108+
"pid": query.get("pid")}
107109
else:
108110
dic_argument = urlparse.parse_qs(
109111
self._recv_buff.split(constants.DOUBLE_CRLF)[-1]
110-
) + {"server": self._server}
112+
) + {"server": self._server, "pid": query.get("pid")}
111113
# Remove un-usable keys
112114
dic_argument.pop('self', None)
113115

@@ -160,11 +162,12 @@ def _set_game(self):
160162
return # Will stay until I will finish it
161163
headers = self._request.get_all_header()
162164
parsed_uri = urlparse.urlparse(self._request.uri)
165+
querry = urlparse.parse_qs(parsed_uri.query)
163166
if headers["cookie"]: # Setting game object
164167
self._find_game_object(headers)
165168
if parsed_uri.path in (
166-
self.services.choose_name.NAME,
167-
self.services.register_quiz.NAME
169+
services.choose_name.NAME,
170+
services.register_quiz.NAME
168171
):
169172
if "cookie" in headers: # Remove existing user
170173
self._server.pid_client.pop(headers["cookie"])
@@ -173,16 +176,21 @@ def _set_game(self):
173176
player.game_master = None
174177
if self._game.NAME == "PLAYER":
175178
self._game.game_master.remove_player(headers["cookie"])
176-
# TODO: creat new game object
177-
if parsed_uri.path == self.services.choose_name.NAME:
178-
self._game = game.GamePlayer(
179-
self._server.pid_client[urlparse.parse_qs(
180-
parsed_uri.query)[0]])
181-
else:
182-
self._game = game.GameMaster(
183-
urlparse.parse_qs(parsed_uri.query)[0])
184-
self._extra_headers[
185-
"Set-Cookie"] = "pid=%d" % self._game.pid
179+
180+
if parsed_uri.path == services.choose_name.NAME: # new one
181+
self._game = game.GamePlayer(
182+
self._server.pid_client.get(int(querry["pid"])))
183+
184+
else:
185+
self._game = game.GameMaster(querry["quiz_name"])
186+
self._extra_headers[
187+
"Set-Cookie"] = "pid=%d" % self._game.pid
188+
189+
# Set name for player
190+
if (parsed_uri.path == services.waiting_room_start.NAME
191+
and self._game is not None and self._game.NAME == "PLAYER"):
192+
self._game.name = querry.name
193+
self._game.game_master.add_player(self._game.pid, self._game)
186194

187195
def recv(self):
188196
"""Recv data from the client socket and process it to Reqeust and

common.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pid_client = {}

game.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def add_player(self, new_pid, game_player):
2626
def remove_player(self, pid):
2727
self._players_list.pop[pid]
2828

29-
def get_play_list(self):
29+
def get_player_list(self):
3030
return self._players_list
3131

3232

server.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import socket
44
import traceback
55

6-
from . import (async_io, base, client, common_events, constants,
6+
from . import (async_io, base, client, common, common_events, constants,
77
custom_exceptions, util)
88

99

@@ -24,8 +24,7 @@ def __init__(
2424
self._run = True
2525
self.logger.info("Initialized server, buff size '%d'", buff_size)
2626
self._base_directory = base_directory
27-
28-
self.pid_client = {}
27+
self.common = common
2928

3029
def terminate(self):
3130
self._run = False
@@ -63,7 +62,7 @@ def _add_to_databases(self, s, state=constants.SERVER):
6362
entry = self._database[s]
6463
if state == constants.CLIENT:
6564
entry["client"] = client.Client(
66-
s, self._buff_size, self._base_directory, self)
65+
s, self._buff_size, self._base_directory, common)
6766
self._fd_socket[s.fileno()] = s
6867
self.logger.debug(
6968
"s added to database, {'%s': '%s'}",

services.py

+19-10
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,14 @@ def __init__(self, quiz_name):
101101
self.finished_reading = False # Did we read everything from read?
102102
self.read_pointer = 0 # How much did we read from read
103103
self._quiz_name = quiz_name[0]
104-
self._content_page = self.content()
105104
if os.path.isfile(os.path.normpath("PyHoot\Files\%s.xml" %
106105
os.path.normpath(self._quiz_name))):
107106
self.content = self.right
108-
self.new_quiz = True
107+
self.right_page = True
109108
else:
110109
self.content = self.wrong
111-
self.new_quiz = False
110+
self.right_page = False
111+
self._content_page = self.content()
112112

113113
def right(self):
114114
return BASE_HTTP % ("right", "WIP")
@@ -148,21 +148,23 @@ def content(self):
148148
class choose_name(Service):
149149
NAME = "/choose_name"
150150

151-
def __init__(self, server, pid):
151+
def __init__(self, common, pid):
152152
self.finished_reading = False # Did we read everything from read?
153153
self.read_pointer = 0 # How much did we read from read
154-
if server.pid_client.get(pid) is not None:
154+
if common.pid_client.get(pid) is not None:
155155
self.content = self.right
156+
self.right_page = True
156157
else:
157158
self.content = self.wrong
159+
self.right_page = False
158160
self._content_page = self.content()
159161

160162
def right(self):
161163
return BASE_HTTP % (
162164
"Choose name",
163165
"""<form action = "/waiting_room_start" method = "get">
164166
<font size = "6"> Choose name</font></br>
165-
<input type="text" style="width: 200px;">
167+
<input type="text" name="name" style="width: 200px;">
166168
<br><br><input type="submit" value="Start Playing!"
167169
style="height:50px;width:150px">
168170
"""
@@ -184,11 +186,18 @@ def wrong(self):
184186
class waiting_room_start(Service):
185187
NAME = "/waiting_room_start" # TODO: Write this
186188

187-
# TODO: Make it work
188-
def __init__(self, name, server, ):
189+
def __init__(self, name, common, pid):
189190
self.finished_reading = False # Did we read everything from read?
190191
self.read_pointer = 0 # How much did we read from read
191-
if self.server.pid_client
192+
name_list = []
193+
for player in common.pid_client[pid].get_play_list:
194+
name_list.append(player.name)
195+
if name not in name_list:
196+
self.content = self.right
197+
self.right_page = True
198+
else:
199+
self.content = self.wrong
200+
self.right_page = False
192201
self._content_page = self.content()
193202

194203
def get_pid(self):
@@ -205,7 +214,7 @@ def wrong():
205214
"Choose name",
206215
"""<form action = "/waiting_room_start" method = "get">
207216
<font size = "6"> Name taken, Choose name</font></br>
208-
<input type="text" style="width: 200px;">
217+
<input type="text" name="name" style="width: 200px;">
209218
<br><br><input type="submit" value="Start Playing!"
210219
style="height:50px;width:150px">
211220
"""

0 commit comments

Comments
 (0)