Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
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