def requestVideoCallWithUsername(request): """ This method is called when a user request a video conference. Example: username=ddmbr&callToUsername=test """ if request.method == 'POST': caller = request.POST['username'] caller_uid = user.getIdByUsername(caller) reviever = request.POST['callToUsername'] reviever_uid = user.getIdByUsername(reciever) # # check the caller's and reciever's languages reciever_lang = user.getLanguageByID(reciever_uid) caller_lang = user.getLanguageByID(caller_uid) # # find a proper translator user.callTranslator(caller_lang, reciever_lang) # # call the reciever logging.info("%s want to start a conference with %s", caller, reciever) user.startCall(caller_uid, reciever_uid) # # Try to send a notification callInfo = getMyInfo( username ) data = {"callType":"videoCall", "callContact": callInfo } user.sendPushMsg(reciever_uid) # # get he's tokbox session id session_id = user.getVideoSessionById(caller_uid) # # generate a corresponding token token = opentok_sdk.generate_token(session_id) to_json = {'requestType':'videoCall', 'message':'accept', 'sessionId':session_id, 'token':token} response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') else: response = HttpResponse("Error!") if request.META['HTTP_USER_AGENT'].find("iPhone") == -1: response['Access-Control-Allow-Origin']='*' return response
def requestSessionWithUsername(request): """ Generate and return the coresponding session ID and token. """ # # generate a session and a token for him username = request.POST['username'] logging.info("session and token request: %s", username) session_address = request.POST['address'] logging.debug('IP address: %s', session_address) session_properties = {OpenTokSDK.SessionProperties.p2p_preference: "enable"} videoSession = opentok_sdk.create_session(session_address, session_properties) uid = user.getIdByUsername(username) user.setVideoSession(uid, videoSession.session_id) logging.debug('session_id: %s', videoSession.session_id) # to_json = { "requestType": "session", "sessionId": videoSession.session_id, } response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') logging.info("response: %s", to_json) response['Access-Control-Allow-Origin']='*' return response
def requestLoginWithUsername(request): """ Authenticate a login request. If it is a legal one, a push token(for iOS device) will also be generated and stored in the database. """ if request.method == 'POST' : username = request.POST['username'] username = username.lower() password = request.POST['password'] logging.info("login request: %s, %s", username, password) # # validate the login attempt # if not user.isValid(username, password): to_json = { "requestType": "login", "message": "fail" } else: # # Generate a push token pushToken = '' try: # iOS front-end pushToken = request.POST['pushToken'] except: # Web front-end pass print pushToken logging.debug("Generated pushToken: %s", pushToken) uid = user.getIdByUsername(username) user.setPushToken(uid, pushToken) privilege_id = user.getPrivilegeById(uid) # # Generate the login success mesage to_json = { "requestType": "login", # ca be banned since pushing is not necessary in this method "username": username, "message": "success", "privilege_id": privilege_id, } # response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') logging.info("response: %s", to_json) else: response = HttpResponse("Error!") # # TODO WRAP if request.META['HTTP_USER_AGENT'].find("iPhone") == -1: response['Access-Control-Allow-Origin']='*' return response
def updateStatusWithUsername(request): """ Called to sync with the server. TODO: More wrap needed! """ if request.method == 'POST': username = request.POST['username'] uid = user.getIdByUsername(username) privilege_id = user.getPrivilegeById(uid) if privilege_id == '0': # # then he is a user # check comming call session_id = user.checkCallById(uid) if session_id != '': # # generate a corresponding token token = opentok_sdk.generate_token(session_id) to_json = {'requestType':'answerVideoCall', 'message':'accept', 'sessionId':session_id, 'token':token} logging.info('%s get a comming call', username) else: # # There's no comming call to_json = {'sessionId':'', 'token':'', 'message':'reject'} response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') if privilege_id == '2': # # he is a translator (lang_1, lang_2) = user.getLanguageByID(uid) session_id = user.getTransTask() if session_id != '': # # generate a corresponding token token = opentok_sdk.generate_token(session_id) to_json = {'requestType':'answerVideoCall', 'message':'accept', 'sessionId':session_id, 'token':token} else: to_json = {'sessionId':'', 'token':'', 'message':'reject'} response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') else: response = HttpResponse("Error!") #logging.info("response: %s", to_json) if request.META['HTTP_USER_AGENT'].find("iPhone") == -1: response['Access-Control-Allow-Origin']='*' return response
def requestContactsWithUsername(request): if request.method == 'POST': username = request.POST['username'] uid = user.getIdByUsername(username) contact_list = user.getContactsByID(uid) to_json = { "requestType": "contacts", "contacts": contact_list, } response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') if request.META['HTTP_USER_AGENT'].find("iPhone") == -1: response['Access-Control-Allow-Origin']='*' return response else: return HttpResponse("Error")
def callInterpreter(request): if request.method=='POST': username = request.POST['username'] uid - user.getIdByUsername(username) lang_1 = request.POST['myLanguage'] lang_2 = request.POST['targetLanguage'] user.requireTranslator(uid, lang_1, lang_2) # # get he's tokbox session id session_id = user.getVideoSessionById(caller_uid) # # generate a corresponding token token = opentok_sdk.generate_token(session_id) to_json = {'requestType':'interpreterVideoCall', 'message':'accept', 'sessionId':session_id, 'token':token} response = HttpResponse(simplejson.dumps(to_json), mimetype='application/json') return response