public static void LogTutorialStatusUpdate(string lessonId, string lessonStatus)
        {
            var userId = UnityConnectProxy.GetUserId();

            if (userId.IsNullOrEmpty())
            {
                return;
            }
            var getLink = @"/v1/users/" + userId + @"/lessons";
            var address = HostAddress + getLink;

            var jsonData = RegisterLessonRequest.GetJSONString(lessonStatus, userId, lessonId);
            var req      = UnityWebRequest.Post(address, jsonData);
            var data     = System.Text.Encoding.UTF8.GetBytes(jsonData);

            req.uploadHandler = new UploadHandlerRaw(data);

            req.SetRequestHeader("Content-Type", "application/json");
            req.SetRequestHeader("X-IET-Version", GetVersion());
            req.SetRequestHeader("Authorization", "Bearer " + UnityConnectProxy.GetAccessToken());

            SendWebRequest(req, r =>
            {
                if (!IsRequestSuccess(r))
                {
                    return;
                }
            });
        }
示例#2
0
        private static void GetTutorial(string lessonId, Action <List <TutorialProgressStatus> > action)
        {
            var userId = UnityConnectProxy.GetUserId();

            if (userId.IsNullOrEmpty())
            {
                if (!HasWarnedAboutLogin)
                {
                    Debug.LogWarning("Error: No user ID. Are you logged in?");
                    HasWarnedAboutLogin = true;
                }
                return;
            }
            var getLink = @"/v1/users/" + userId + @"/lessons";
            var address = HostAddress + getLink;
            var req     = MakeGetLessonsRequest(address, lessonId);

            SendWebRequest(req, (UnityWebRequest r) =>
            {
                if (!IsRequestSuccess(r))
                {
                    return;
                }
                var lessonResponses = TutorialProgressStatus.ParseResponses(r.downloadHandler.text);
                action(lessonResponses);
            });
        }
示例#3
0
        private static UnityWebRequest MakeGetLessonsRequest(string address, string lessonId)
        {
            if (!string.IsNullOrEmpty(lessonId))
            {
                address += "?lessonId=" + lessonId;
            }

            var req = UnityWebRequest.Post(address, new WWWForm());

            req.SetRequestHeader("Content-Type", "application/json");
            req.SetRequestHeader("X-IET-Version", GetVersion());
            req.SetRequestHeader("Authorization", "Bearer " + UnityConnectProxy.GetAccessToken());
            req.method = "GET";
            return(req);
        }
        /// <summary>
        /// Opens an Url in the browser.
        /// Links to Unity's websites will open only if the user is logged in.
        /// </summary>
        /// <param name="url"></param>
        public static void OpenUrl(string url)
        {
            if (string.IsNullOrEmpty(url))
            {
                return;
            }
            string urlWithoutHttpPrefix = RemoveHttpProtocolPrefix(url);

            if (IsUnityUrlRequiringAuthentication(urlWithoutHttpPrefix) && UnityConnectProxy.loggedIn)
            {
                UnityConnectProxy.OpenAuthorizedURLInWebBrowser(url);
                return;
            }
            Application.OpenURL(url);
        }
示例#5
0
        public static async void LogTutorialStatusUpdate(string lessonId, string lessonStatus)
        {
            var userId = UnityConnectProxy.GetUserId();

            if (userId.IsNullOrEmpty())
            {
                return;
            }
            var getLink = @"/v1/users/" + userId + @"/lessons";

            var jsonData = RegisterLessonRequest.GetJSONString(lessonStatus, userId, lessonId);

            // UnityWebRequests were causing memory leaks here, so they were replaced with HttpClient
            using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, getLink))
            {
                var data = new StringContent(jsonData, Encoding.UTF8, "application/json");

                request.Content = data;

                request.Headers.Add("X-IET-Version", GetVersion());
                request.Headers.Add("Authorization", "Bearer " + UnityConnectProxy.GetAccessToken());
                HttpResponseMessage response = await s_HttpClient.SendAsync(request);
            }
        }