diff --git a/.DS_Store b/.DS_Store index 18547431fc88e200671c46bab96e8eeb767dc026..ecbd8745b852288b7ee3372bccde4f5e9307ec7d 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Lab_3/Twidder/.DS_Store b/Lab_3/Twidder/.DS_Store index 7ed50fe6d9f4a9214d0db2613c2ee36381bc47ca..aeb683ff2abafaefdd695afac5298539b9a4f169 100644 Binary files a/Lab_3/Twidder/.DS_Store and b/Lab_3/Twidder/.DS_Store differ diff --git a/Lab_3/Twidder/server.py b/Lab_3/Twidder/server.py index 1b0053efa2b69792c76f5b79561e3117f8141b7d..b24993a14e6bd5aca8f1454d5a72f8bc247537b3 100644 --- a/Lab_3/Twidder/server.py +++ b/Lab_3/Twidder/server.py @@ -1,17 +1,20 @@ """Server""" -from flask import Flask, jsonify, request, make_response +from flask import Flask, jsonify, request, make_response, render_template from gevent.pywsgi import WSGIServer import uuid import database_helper +import json from geventwebsocket.handler import WebSocketHandler - +from flask_sock import Sock +from gevent import monkey +monkey.patch_all() #Remember: #PUT for updating data, POST for adding new data #save token on client and server (lab 3) - +# source /Users/psyfax/TDDD97/bin/activate # source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate" # python3 server.py # http://127.0.0.1:5000/myServer @@ -22,6 +25,8 @@ from geventwebsocket.handler import WebSocketHandler app = Flask(__name__, static_url_path = '/static')#in case flask does not recognize folder +sock = Sock(app) + app.debug = True session = {'token':'email'} @@ -33,7 +38,6 @@ def root(): def myServer(): return app.send_static_file('client.html') - def token_has_error(token): """All token standard error checks""" if token is None: @@ -59,23 +63,33 @@ def input_has_error(input): return True, 400, "" return False, 0, str -@app.route("/myServer/socket", methods=['POST']) -def createSocket(): - """Establish socket connection""" - if request.environ.get('wsgi.websocket'): - ws = request.environ['wsgi.websocket'] - while True: - message = ws.wait() - ws.send(message) - return - +@sock.route('/myServer/api') +def echo(ws): + while True: + if not ws: + return + data = ws.receive() + email = json.loads(data)["email"] + token = json.loads(data)["token"] + + # Nonse so far: + # if email in session.values(): + # toDelete = "" + # for key, value in session.items(): + # if value == email: + # toDelete = key + # print(key, value) + + print("- - - - " + token) + ws.send(data) + @app.route("/myServer/sign_in", methods=['POST']) def sign_in(): """Sign in user""" - + print("shoit") # Validate Email tmp = input_has_error('email') if tmp[0]: @@ -337,5 +351,6 @@ def post_message(): if __name__ == '__main__': # app.run(port=5000, debug=True) - http_server = WSGIServer(('127.0.0.1', 5000), app, handler_class = WebSocketHandler) + app.debug = True + http_server = WSGIServer(('127.0.0.1', 5000), app) # handler_class = WebSocketHandler http_server.serve_forever() diff --git a/Lab_3/Twidder/static/client.js b/Lab_3/Twidder/static/client.js index a0b3905c53934760f7a5df1d6a0f7135adfadb0f..f87fc168eac71c5b2ea88c6c185b4a478d457399 100644 --- a/Lab_3/Twidder/static/client.js +++ b/Lab_3/Twidder/static/client.js @@ -3,30 +3,12 @@ var minPassLength = 2; var windowDiv; var welcomeDiv; var profileDiv; -var url = 'http://127.0.0.1:5000/myServer/'; +var url = 'http://' + document.domain + ':5000/myServer/'; var curr_page = ""; var socket; - // source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate" -// socket.onopen = function (event) { -// let token = localStorage.getItem("currentUser"); - // Todo - ändra så att tken skickas i header istället - // socket.send(JSON.stringify({token: token})); -//}; -// socket.onmessage = function (event) { -// console.log(event.data); -// }; - - -// webSocket.onopen = function(event){ -// webSocket.send(JSON.stringify({email: "o@o", password: "oo"})) -// }; - -// webSocket.onmessage = function (event) { -// console.log(event.data); -// }; // - - - - - Init Request Objects - - - - - // @@ -46,14 +28,20 @@ signInRequest.onreadystatechange = function() { setUserDetails("home"); // Establish web socket - socket = new WebSocket(url + "socket"); - + socket = new WebSocket('ws://' + document.domain + ':5000/myServer/api'); socket.onopen = function (event) { + let myEmail = localStorage.getItem("homeEmail"); // Todo - ändra så att token skickas i header istället - socket.send(JSON.stringify({token: token})); - socket.send(JSON.stringify({email: "o@o", password: "oo" })); + this.send(JSON.stringify({token: token, email: myEmail})); + console.log("Nu har jag skickat"); } + socket.onmessage = function (event) { + console.log("Nu fick jag svar"); + console.log(event.data); + }; + console.log("ja är signed in"); + } else if (this.status == 400) { @@ -78,18 +66,25 @@ signOutRequest.onreadystatechange = function() { if (this.status == 204) { // Reset token in the localStorage - localStorage.setItem("currentUser", ""); - localStorage.setItem("homeEmail", ""); - localStorage.setItem("browseEmail", ""); + // localStorage.setItem("currentUser", ""); + // localStorage.setItem("homeEmail", ""); + // localStorage.setItem("browseEmail", ""); // Changes the view to welcome view + displayView(); } else if (this.status == 401) { console.log("Error 401: You are not loged in"); + // todo - kanske ta bort + localStorage.setItem("currentUser", ""); + displayView(); } else { console.log("Unknown error"); + // todo - kanske ta bort + localStorage.setItem("currentUser", ""); + displayView(); } } }; @@ -335,9 +330,9 @@ displayView = function(){ window.onload = function () { // Delete when done - används för att hoppa tillbaka till rtt view under utveckling - // localStorage.setItem("currentUser", ""); - // localStorage.setItem("homeEmail", ""); - // localStorage.setItem("browseEmail", ""); + localStorage.setItem("currentUser", ""); + localStorage.setItem("homeEmail", ""); + localStorage.setItem("browseEmail", ""); // All key/value pairs stored in out localStorage // If first time? check this: