Пример #1
0
    public static IEnumerator startSession(int moduleID)
    {
        string  url  = ipAdress + "/session";
        WWWForm form = new WWWForm();

        string sessionDate = DateTime.Now.ToString(@"MM\/dd\/yy");
        string startTime   = DateTime.Now.ToString("h:mm");

        form.AddField("moduleID", moduleID);
        form.AddField("sessionDate", sessionDate);
        form.AddField("startTime", startTime);
        form.AddField("platform", "cp");

        UnityWebRequest startSessionRequest = UnityWebRequest.Post(url, form);

        TokenJson token = TokenJson.createFromJson(loginTokenString);

        startSessionRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        Debug.Log("Test Start " + startTime);

        yield return(startSessionRequest.SendWebRequest());

        string sessionJsonString = startSessionRequest.downloadHandler.text;

        sessionJson session = sessionJson.createFromJson(sessionJsonString);

        sessionID = session.getSessionID();
    }
Пример #2
0
    // Lists the Modules avalible to the player logged in
    public static IEnumerator avalibleModules()
    {
        TokenJson token = TokenJson.createFromJson(loginTokenString);
        string    url   = ipAdress + "/modules";

        UnityWebRequest getModulesRequest = UnityWebRequest.Get(url);

        //Debug.Log(token.access_token);
        getModulesRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        yield return(getModulesRequest.SendWebRequest());

        string avalibleModulesJson = getModulesRequest.downloadHandler.text;

        //Debug.Log(avalibleModulesJson);


        ModulesJson[] ModulesJsonObjects = JsonHelper.getJsonArray <ModulesJson>(avalibleModulesJson);


        foreach (ModulesJson m in ModulesJsonObjects)
        {
            avalibleModulesDic.Add(m.name, m.moduleID);
        }

        modulesFound = true;
    }
        /// <summary>
        /// Set the current session's Google OAuth 2.0 token and the corresponding user in the database
        /// </summary>
        /// <param name="token"></param>
        private static void SetSession(TokenJson token)
        {
            System.Web.HttpContext.Current.Session["token"] = token;
            if (token != null)
            {
                UserJson googleUser = GoogleInterface.GetUserInfo(token);
                if (String.IsNullOrEmpty(googleUser.email))
                {
                    throw new ArgumentNullException("Could not get user's email from Google.");
                }
                List <User> dbUsers = Db.Db.GetUsersSearch(googleUser.email, null);
                if (dbUsers.Count == 0)
                {
                    throw new ArgumentException("User with email (" + googleUser.email + ") could not be found in the database.");
                }
                User curUser = dbUsers[0];//current user for this session

                //update the user's picture in the database if needed
                if (!String.IsNullOrEmpty(googleUser.picture) && (String.IsNullOrEmpty(curUser.PhotoUrl) || !curUser.PhotoUrl.Equals(googleUser.picture)))
                {
                    curUser.PhotoUrl = googleUser.picture;
                    Db.Db.UpdateUser(curUser);
                }

                System.Web.HttpContext.Current.Session["user"] = curUser;
            }
            else
            {
                System.Web.HttpContext.Current.Session["user"] = null;
            }
        }
        /// <summary>
        /// GET: Token.
        /// Called via the Google API during login; do not call this directly.
        /// </summary>
        /// <param name="code">One-time access code to get authentication token</param>
        /// <param name="state">Current state of the app. Used for URL redirection</param>
        /// <returns></returns>
        public ActionResult Token(string code, string state)
        {
            string    redirectUri = Url.Action("Token", null, null, Request.Url.Scheme);
            TokenJson token       = GoogleInterface.GetToken(code, redirectUri);

            SetSession(token);
            return(Redirect(state));
        }
Пример #5
0
    private void Start()
    {
        xrCameraSubsystem = arCameraManager.subsystem;
        string token = AccessToken.getAccessToken();

        Debug.Log("token:" + token);
        tokenJson = JsonUtility.FromJson <TokenJson>(token);
    }
Пример #6
0
    public static IEnumerator downloadAudio(string audioName, bool questionAnswer, int ID)
    {
        Debug.Log("AUDIO " + audioName);

        string    url   = ipAdress + audioName;
        TokenJson token = TokenJson.createFromJson(loginTokenString);

        UnityWebRequest pictureRequest = UnityWebRequestTexture.GetTexture(url);

        pictureRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        yield return(pictureRequest.SendWebRequest());
    }
        /// <summary>
        /// Checks if the current session's token is still valid. If the session is invalid, the user will need to re-login.
        /// </summary>
        /// <returns></returns>
        public static bool IsSessionValid()
        {
            TokenJson token = GetSessionToken();

            if (token != null)
            {
                TokenInfoJson tokenInfo = GoogleInterface.GetTokenInfo(token);
                if (tokenInfo.expires_in > 0)
                {
                    return(true);
                }
                //clear out the invalid token
                SetSession(null);
            }
            return(false);
        }
Пример #8
0
    public static IEnumerator endSession(int points)
    {
        string  url  = ipAdress + "/endsession";
        WWWForm form = new WWWForm();

        System.DateTime timeNow = DateTime.Now;

        string endTimeStringBefore = timeNow.ToString("h:mm");

        // Due to the time still progressing while the player is paused, we keep track of how long the player is paused and subtract it from the time the player ended the session.
        System.DateTime endTime = timeNow.AddSeconds(-1 * PauseScript.pauseTimer);

        string endTimeString = endTime.ToString("h:mm");


        Debug.Log("end time modified: " + endTimeString);
        Debug.Log("end time original: " + endTimeStringBefore);

        form.AddField("sessionID", sessionID);
        form.AddField("endTime", endTimeString);
        form.AddField("playerScore", points.ToString());

        UnityWebRequest endSessionRequest = UnityWebRequest.Post(url, form);

        TokenJson token = TokenJson.createFromJson(loginTokenString);

        endSessionRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        Time.timeScale = 0;

        yield return(endSessionRequest.SendWebRequest());

        Time.timeScale = 1;

        Debug.Log("Time Scale 1: Backendhook");

        if (endSessionRequest.isNetworkError || endSessionRequest.isHttpError)
        {
            Debug.Log(endSessionRequest.error);
        }
        else
        {
            Debug.Log("endSession Upload complete!");
        }
    }
Пример #9
0
    public static IEnumerator getModuleQuestionCount(int ID)
    {
        LoginButton.runninggetModuleInfo.Add(true);

        TokenJson token = TokenJson.createFromJson(loginTokenString);
        string    url   = ipAdress + "/modulequestions";

        WWWForm form = new WWWForm();

        form.AddField("moduleID", ID);

        UnityWebRequest getModuleRequest = UnityWebRequest.Post(url, form);

        getModuleRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        yield return(getModuleRequest.SendWebRequest());

        moduleJsonString = getModuleRequest.downloadHandler.text;

        QuestionJson[] questionJsonObjects = JsonHelper.getJsonArray <QuestionJson>(moduleJsonString);

        int i = 0;

        foreach (QuestionJson q in questionJsonObjects)
        {
            if (q.type == "IMAGE")
            {
                modulesWithImages.Add(ID);
            }

            if (q.type == "LONGFORM" || q.type == "MATCH" || q.type == "IMAGE" || q.type == "PHRASE")
            {
                i++;
            }
            else
            {
                Debug.Log("QUESTION HAS INVALID TYPE " + q.type);
            }
        }

        moduleQCount.Add(ID, i);

        LoginButton.runninggetModuleInfo.Remove(true);
    }
Пример #10
0
    public static IEnumerator getModuleHighScore(int ID)
    {
        LoginButton.runninggetModuleInfo.Add(true);

        TokenJson token = TokenJson.createFromJson(loginTokenString);
        string    url   = ipAdress + "/highscores";

        WWWForm form = new WWWForm();

        form.AddField("moduleID", ID);
        form.AddField("platform", "cp");

        UnityWebRequest getModuleRequest = UnityWebRequest.Post(url, form);

        getModuleRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        yield return(getModuleRequest.SendWebRequest());

        string highScoreJson = getModuleRequest.downloadHandler.text;

        HighScoreJson[] HighScoreJsons = JsonHelper.getJsonArray <HighScoreJson>(highScoreJson);

        var hsList = new List <int>();

        foreach (HighScoreJson hs in HighScoreJsons)
        {
            if (hs.score != null)
            {
                hsList.Add(hs.score);
            }
        }

        if (hsList.Count != 0)
        {
            highScores.Add(ID, hsList.Max());
        }
        else
        {
            highScores.Add(ID, 0);
        }

        LoginButton.runninggetModuleInfo.Remove(true);
    }
Пример #11
0
    public static IEnumerator sendQuestionInfo(int questionID, int termID, bool correct)
    {
        LoginButton.runninggetModuleInfo.Add(true);

        TokenJson token = TokenJson.createFromJson(loginTokenString);
        string    url   = ipAdress + "/loggedanswer";

        string correct2 = "wrong";

        if (correct == true)
        {
            correct2 = "1";
        }
        if (correct == false)
        {
            correct2 = "0";
        }

        WWWForm form = new WWWForm();

        form.AddField("questionID", questionID);
        form.AddField("termID", termID);
        form.AddField("sessionID", sessionID);
        form.AddField("correct", correct2);

        UnityWebRequest getModuleRequest = UnityWebRequest.Post(url, form);

        getModuleRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        yield return(getModuleRequest.SendWebRequest());

        if (getModuleRequest.isNetworkError || getModuleRequest.isHttpError)
        {
            Debug.Log(getModuleRequest.error);
        }
        else
        {
            Debug.Log("Upload complete!");
        }
    }
Пример #12
0
    // questionAnswer = true: question
    // questionAnswer = false: answer
    public static IEnumerator downloadImg(string imageName, bool questionAnswer, int ID)
    {
        string    url   = "https://endlesslearner.com/" + imageName;
        TokenJson token = TokenJson.createFromJson(loginTokenString);

        UnityWebRequest pictureRequest = UnityWebRequestTexture.GetTexture(url);

        pictureRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        Debug.Log(url);

        yield return(pictureRequest.SendWebRequest());

        if (pictureRequest.isNetworkError || pictureRequest.isHttpError)
        {
            Debug.Log("Pic Error:" + pictureRequest.error);
        }
        else
        {
            Debug.Log("Upload complete!");
        }

        Texture2D myTexture = ((DownloadHandlerTexture)pictureRequest.downloadHandler).texture;

        if (!System.IO.Directory.Exists(Application.persistentDataPath + "/Images"))
        {
            System.IO.Directory.CreateDirectory(Application.persistentDataPath + "/Images");
        }


        if (questionAnswer == false)
        {
            SaveTextureAsPNG(myTexture, Application.persistentDataPath + " /Images/", "answer" + ID);
        }

        if (questionAnswer == true)
        {
            SaveTextureAsPNG(myTexture, Application.persistentDataPath + " /Images/", "question" + ID);
        }
    }
Пример #13
0
    // Gets the json of the module with a specific ID
    public static IEnumerator getModule(int ID)
    {
        TokenJson token = TokenJson.createFromJson(loginTokenString);
        string    url   = ipAdress + "/modulequestions";

        WWWForm form = new WWWForm();

        form.AddField("moduleID", ID);

        UnityWebRequest getModuleRequest = UnityWebRequest.Post(url, form);

        getModuleRequest.SetRequestHeader("Authorization", "Bearer " + token.access_token);

        yield return(getModuleRequest.SendWebRequest());

        moduleJsonString = getModuleRequest.downloadHandler.text;

        Debug.Log(moduleJsonString);

        // Splits the questions and answers out of it, and stores it in the collectionmanager dictionaries
        QuestionJson[] questionJsonObjects = JsonHelper.getJsonArray <QuestionJson>(moduleJsonString);
        AnswerJson[]   answerJsonObjects   = new AnswerJson[500];

        int i;

        foreach (QuestionJson q in questionJsonObjects)
        {
            // Longform should be the only question type with multiple answers
            if (q.type == "LONGFORM")
            {
                if (!CollectionManager.questionCollection.ContainsKey(q.questionID))
                {
                    CollectionManager.questionCollection.Add(q.questionID, new question(q.questionID, q.answerIDList, q.questionText, null, null));
                }

                i = 0;
                foreach (AnswerJson a in q.answers)
                {
                    q.answerIDList[i] = a.termID;
                    if (!CollectionManager.answerCollection.ContainsKey(a.termID))
                    {
                        CollectionManager.answerCollection.Add(a.termID, new answer(a.termID, a.back, null, a.imageLocation, a.audioLocation));
                    }
                    i++;
                }
            }
            else if (q.type == "MATCH")
            {
                foreach (AnswerJson a in q.answers)
                {
                    q.answerIDList[0] = a.termID;

                    if (!CollectionManager.questionCollection.ContainsKey(q.questionID))
                    {
                        CollectionManager.questionCollection.Add(q.questionID, new question(q.questionID, q.answerIDList, "Match: " + a.front, null, null));
                    }

                    if (!CollectionManager.answerCollection.ContainsKey(a.termID))
                    {
                        CollectionManager.answerCollection.Add(a.termID, new answer(a.termID, a.back, null, a.imageLocation, a.audioLocation));
                    }
                }
            }
            else if (q.type == "PHRASE")
            {
                foreach (AnswerJson a in q.answers)
                {
                    q.answerIDList[0] = a.termID;

                    if (!CollectionManager.questionCollection.ContainsKey(q.questionID))
                    {
                        CollectionManager.questionCollection.Add(q.questionID, new question(q.questionID, q.answerIDList, q.questionText, null, null));
                    }

                    if (!CollectionManager.answerCollection.ContainsKey(a.termID))
                    {
                        CollectionManager.answerCollection.Add(a.termID, new answer(a.termID, a.back, null, a.imageLocation, a.audioLocation));
                        //Debug.Log("Term ID " + a.termID);
                    }
                }
            }
            else if (q.type == "IMAGE")
            {
                foreach (AnswerJson a in q.answers)
                {
                    q.answerIDList[0] = a.termID;

                    if (!CollectionManager.questionCollection.ContainsKey(q.questionID))
                    {
                        CollectionManager.questionCollection.Add(q.questionID, new question(q.questionID, q.answerIDList, q.questionText + a.front, null, null));
                    }

                    if (!CollectionManager.answerCollection.ContainsKey(a.termID))
                    {
                        CollectionManager.answerCollection.Add(a.termID, new answer(a.termID, a.back, null, a.imageLocation, a.audioLocation));
                        //Debug.Log("Term ID " + a.termID);
                    }
                }
            }
            else
            {
                //Debug.Log("QUESTION HAS INVALID TYPE " + q.type);
            }
        }

        Debug.Log("CollectionMade");
        collectionMade = true;
    }