private void ProcessWebRequestError(WebRequestError e, bool isSecurityCode) { if (e.webRequest.responseCode == 401 && isSecurityCode) { if (onSecurityCodeRefused != null) { onSecurityCodeRefused(e.errorMessage); } } else if (e.webRequest.responseCode == 422 && !isSecurityCode) { if (onEmailRefused != null) { onEmailRefused(emailRefusedMessage); } } else { if (onWebRequestError != null) { onWebRequestError(e); } } inputField.interactable = true; }
private IEnumerator FetchUserProfile() { bool isUnresolvable = false; UserProfile profile = null; float nextRetrySeconds = 0; string errorMessage = null; while (!isUnresolvable && profile == null && this != null) { WebRequestError error = null; bool isDone = false; ModManager.GetAuthenticatedUserProfile((p) => { isDone = true; profile = p; }, (e) => { isDone = true; error = e; }); while (!isDone) { yield return(null); } if (error != null) { isUnresolvable = error.isRequestUnresolvable; if (isUnresolvable) { errorMessage = ("Unable to get your profile from the mod.io servers.\n" + error.displayMessage); } else { yield return(new WaitForSecondsRealtime(nextRetrySeconds)); nextRetrySeconds += 5f; } } else if (profile == null) { errorMessage = ("Unable to get your profile from the mod.io servers.\n" + "An unknown error has occurred."); isUnresolvable = true; } } if (isUnresolvable) { MessageSystem.QueueMessage(MessageDisplayData.Type.Error, errorMessage); } else if (this != null) { Debug.Assert(profile != null); view.DisplayUser(profile); } }
/// <summary>Handles the completion of an image download.</summary> protected virtual void OnDownloadCompleted(UnityWebRequest webRequest, string imageURL) { // early out if destroyed if (this == null) { return; } Debug.Assert(webRequest != null); // handle callbacks Callbacks callbacks; bool isURLMapped = this.m_callbackMap.TryGetValue(imageURL, out callbacks); if (callbacks == null) { Debug.LogWarning("[mod.io] ImageRequestManager completed a download but the callbacks" + " entry for the download was null." + "\nImageURL = " + imageURL + "\nWebRequest.URL = " + webRequest.url + "\nm_callbackMap.TryGetValue() = " + isURLMapped.ToString() ); return; } if (webRequest.isHttpError || webRequest.isNetworkError) { if (callbacks.failed.Count > 0) { WebRequestError error = WebRequestError.GenerateFromWebRequest(webRequest); foreach (var errorCallback in callbacks.failed) { errorCallback(error); } } } else { Texture2D texture = ((DownloadHandlerTexture)webRequest.downloadHandler).texture; if (this.isActiveAndEnabled || !this.clearCacheOnDisable) { this.cache[imageURL] = texture; } foreach (var successCallback in callbacks.succeeded) { successCallback(texture); } } // remove from "in progress" this.m_callbackMap.Remove(imageURL); }
private string ConvertErrorToHelpString(WebRequestError error) { if (error.fieldValidationMessages != null && error.fieldValidationMessages.Count > 0) { var helpString = new System.Text.StringBuilder(); foreach (string message in error.fieldValidationMessages.Values) { helpString.Append(message + "\n"); } helpString.Length -= 1; return(helpString.ToString()); } else { return(error.displayMessage); } }
private void ProcessWebRequestError(WebRequestError e, bool isSecurityCode) { if (e.webRequest.responseCode == 401 && isSecurityCode) { MessageSystem.QueueMessage(MessageDisplayData.Type.Error, e.errorMessage); } else if (e.webRequest.responseCode == 422 && !isSecurityCode) { MessageSystem.QueueMessage(MessageDisplayData.Type.Error, emailRefusedMessage); } else { MessageSystem.QueueMessage(MessageDisplayData.Type.Warning, e.displayMessage); } inputField.interactable = true; }
/// <summary>Callback for a failed report submission.</summary> private void OnReportFailed(WebRequestError error) { var messageData = new MessageDialog.Data() { header = "Report Submission Status", message = ("Report submission failed.\n" + error.displayMessage + "\n[Error Code: " + error.webRequest.responseCode.ToString() + "]"), standardButtonCallback = () => { ViewManager.instance.CloseWindowedView(ViewManager.instance.reportDialog); ViewManager.instance.CloseWindowedView(ViewManager.instance.messageDialog); }, standardButtonText = "Done", onClose = () => { ViewManager.instance.CloseWindowedView(ViewManager.instance.reportDialog); ViewManager.instance.CloseWindowedView(ViewManager.instance.messageDialog); }, }; ViewManager.instance.ShowMessageDialog(messageData); }
// ---------[ UTILITY ]--------- /// <summary>Recursively fetches all of the mod profiles in the array.</summary> protected System.Collections.IEnumerator FetchAllModProfiles(int[] modIds, Action <List <ModProfile> > onSuccess, Action <WebRequestError> onError) { List <ModProfile> modProfiles = new List <ModProfile>(); // pagination APIPaginationParameters pagination = new APIPaginationParameters() { limit = APIPaginationParameters.LIMIT_MAX, offset = 0, }; // filter RequestFilter filter = new RequestFilter(); filter.AddFieldFilter(API.GetAllModsFilterFields.id, new InArrayFilter <int>() { filterArray = modIds, }); bool isDone = false; while (!isDone) { RequestPage <ModProfile> page = null; WebRequestError error = null; APIClient.GetAllMods(filter, pagination, (r) => page = r, (e) => error = e); while (page == null && error == null) { yield return(null); } if (error != null) { if (onError != null) { onError(error); } modProfiles = null; isDone = true; } else { modProfiles.AddRange(page.items); if (page.resultTotal <= (page.resultOffset + page.size)) { isDone = true; } else { pagination.offset = page.resultOffset + page.size; } } } if (isDone && modProfiles != null) { onSuccess(modProfiles); } }
// ------[ INITIALIZATION ]------ protected virtual void OnEnable() { // Grab Serialized Properties serializedObject.Update(); modIdProperty = serializedObject.FindProperty("modId"); initializedProfileId = modIdProperty.intValue; editableModProfileProperty = serializedObject.FindProperty("editableModProfile"); isModListLoading = false; profileViewParts = new IModProfileViewPart[] { new LoadingProfileViewPart() }; // Profile Initialization if (modIdProperty.intValue == ScriptableModProfile.UNINITIALIZED_MOD_ID) { this.profile = null; if (!UserAuthenticationData.instance.Equals(UserAuthenticationData.NONE)) { this.isModListLoading = true; this.modOptions = new string[] { "Loading..." }; Action <WebRequestError> onError = (e) => { WebRequestError.LogAsWarning(e); isModListLoading = false; }; ModManager.GetAuthenticatedUserProfile((userProfile) => { this.user = userProfile; // - Find User Mods - Action <List <ModProfile> > onGetUserMods = (profiles) => { modInitializationOptionIndex = 0; modList = profiles.ToArray(); modOptions = new string[modList.Length]; for (int i = 0; i < modList.Length; ++i) { ModProfile mod = modList[i]; modOptions[i] = mod.name; } isModListLoading = false; }; ModManager.GetAuthenticatedUserMods(onGetUserMods, onError); }, onError); } else { this.modOptions = new string[0]; } modInitializationOptionIndex = 0; } else { // Initialize View profile = null; if (modIdProperty.intValue == 0) { profile = null; profileViewParts = CreateProfileViewParts(); foreach (IModProfileViewPart viewPart in profileViewParts) { viewPart.OnEnable(editableModProfileProperty, null, this.user); } ; } else { System.Action <ModProfile> onGetProfile = (p) => { profile = p; profileViewParts = CreateProfileViewParts(); foreach (IModProfileViewPart viewPart in profileViewParts) { viewPart.OnEnable(editableModProfileProperty, p, this.user); } ; profileGetErrorMessage = string.Empty; }; System.Action <WebRequestError> onGetProfileError = (e) => { profile = null; profileViewParts = CreateProfileViewParts(); foreach (IModProfileViewPart viewPart in profileViewParts) { viewPart.OnEnable(editableModProfileProperty, null, this.user); } ; profileGetErrorMessage = ("Unable to fetch the mod profile data on the server.\n" + e.displayMessage); }; ModManager.GetModProfile(modIdProperty.intValue, onGetProfile, onGetProfileError); } } scrollPos = Vector2.zero; isProfileSyncing = false; // Events EditorApplication.update += OnUpdate; LoginWindow.userLoggedIn += OnUserLogin; }
/// <summary>Handles the completion of an image download.</summary> protected virtual void OnDownloadCompleted(UnityWebRequest webRequest, string imageURL) { // early out if destroyed if (this == null) { return; } Debug.Assert(webRequest != null); // - logging - #if DEBUG if (PluginSettings.data.logAllRequests && logDownloads) { if (webRequest.isNetworkError || webRequest.isHttpError) { WebRequestError.LogAsWarning(WebRequestError.GenerateFromWebRequest(webRequest)); } else { var headerString = new System.Text.StringBuilder(); var responseHeaders = webRequest.GetResponseHeaders(); if (responseHeaders != null && responseHeaders.Count > 0) { headerString.Append("\n"); foreach (var kvp in responseHeaders) { headerString.AppendLine("- [" + kvp.Key + "] " + kvp.Value); } } else { headerString.Append(" NONE"); } var responseTimeStamp = ServerTimeStamp.Now; string logString = ("IMAGE DOWNLOAD SUCCEEDED" + "\nURL: " + webRequest.url + "\nTime Stamp: " + responseTimeStamp + " (" + ServerTimeStamp.ToLocalDateTime(responseTimeStamp) + ")" + "\nResponse Headers: " + headerString.ToString() + "\nResponse Code: " + webRequest.responseCode + "\nResponse Error: " + webRequest.error + "\n"); Debug.Log(logString); } } #endif // handle callbacks Callbacks callbacks; bool isURLMapped = this.m_callbackMap.TryGetValue(imageURL, out callbacks); if (callbacks == null) { Debug.LogWarning("[mod.io] ImageRequestManager completed a download but the callbacks" + " entry for the download was null." + "\nImageURL = " + imageURL + "\nWebRequest.URL = " + webRequest.url + "\nm_callbackMap.TryGetValue() = " + isURLMapped.ToString() ); return; } if (webRequest.isHttpError || webRequest.isNetworkError) { if (callbacks.failed.Count > 0) { WebRequestError error = WebRequestError.GenerateFromWebRequest(webRequest); foreach (var errorCallback in callbacks.failed) { errorCallback(error); } } } else { Texture2D texture = ((DownloadHandlerTexture)webRequest.downloadHandler).texture; if (this.isActiveAndEnabled || !this.clearCacheOnDisable) { this.cache[imageURL] = texture; } foreach (var successCallback in callbacks.succeeded) { successCallback(texture); } } // remove from "in progress" this.m_callbackMap.Remove(imageURL); }