Example #1
0
 private void GetSearchTextFromCloud()
 {
     new Thread((ThreadStart)(() =>
     {
         try
         {
             this.defaultSearchBoxText = LocaleStrings.GetLocalizedString("STRING_SEARCH", "");
             string urlWithParams = WebHelper.GetUrlWithParams(WebHelper.GetServerHost() + "/app_center_searchdefaultquery", (string)null, (string)null, (string)null);
             Logger.Debug("url for search api :" + urlWithParams);
             string json = BstHttpClient.Get(urlWithParams, (Dictionary <string, string>)null, false, string.Empty, 0, 1, 0, false, "bgp");
             Logger.Debug("result for app_center_searchdefaultquery : " + json);
             JObject jobject = JObject.Parse(json);
             if ((bool)jobject["success"])
             {
                 string str = jobject["result"].ToString().Trim();
                 if (!string.IsNullOrEmpty(str))
                 {
                     this.defaultSearchBoxText = str;
                 }
                 Logger.Debug("response from search text cloud api :" + str);
             }
         }
         catch (Exception ex)
         {
             Logger.Warning("Failed to fetch text from cloud... Err : " + ex.ToString());
         }
         this.Dispatcher.Invoke((Delegate)(() => this.mSearchTextBox.Text = this.defaultSearchBoxText));
     }))
     {
         IsBackground = true
     }.Start();
 }
 internal void SendSecurityBreachesStatsToCloud(bool isOnClose = false)
 {
     new Thread((ThreadStart)(() =>
     {
         try
         {
             this.AddBlacklistedRunningApplicationsToSecurityBreaches();
             if (this.mSecurityBreachesList.Count > 0)
             {
                 BstHttpClient.Post(WebHelper.GetUrlWithParams(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "{0}/{1}", (object)RegistryManager.Instance.Host, (object)"/bs4/security_metrics"), (string)null, (string)null, (string)null), new Dictionary <string, string>()
                 {
                     {
                         "security_metric_data",
                         this.GetSecurityMetricsData()
                     }
                 }, (Dictionary <string, string>)null, false, this.mVmName, 10000, 1, 0, false, "bgp");
             }
         }
         catch (Exception ex)
         {
             Logger.Error("Exception while sending security stats to cloud : {0}", (object)ex.ToString());
         }
         if (!isOnClose)
         {
             return;
         }
         SecurityMetrics.SecurityMetricsInstanceList.Remove(this.mVmName);
     })).Start();
 }
 private static void GetGrmFromCloud(IEnumerable <string> listOfPackages = null)
 {
     try
     {
         if (listOfPackages != null && listOfPackages.Any <string>())
         {
             List <string> first = new List <string>();
             foreach (string vm in RegistryManager.Instance.VmList)
             {
                 first = first.Union <string>((IEnumerable <string>)JsonParser.GetInstalledAppsList(vm)).ToList <string>();
             }
             if (!listOfPackages.Intersect <string>((IEnumerable <string>)first).Any <string>())
             {
                 return;
             }
         }
         JObject jobject = JObject.Parse(HTTPUtils.SendRequestToCloud("grm/files", (Dictionary <string, string>)null, "Android", 0, (Dictionary <string, string>)null, false, 1, 0, false));
         if ((int)jobject["code"] != 200 || !jobject["data"].Value <bool>((object)"success"))
         {
             return;
         }
         string url                  = jobject["data"][(object)"files"].Value <string>((object)"translations_file");
         string fullJson             = BstHttpClient.Get(jobject["data"][(object)"files"].Value <string>((object)"config_file"), (Dictionary <string, string>)null, false, BlueStacks.Common.Strings.CurrentDefaultVmName, 0, 1, 0, false, "bgp");
         string currentDefaultVmName = BlueStacks.Common.Strings.CurrentDefaultVmName;
         string translationJson      = BstHttpClient.Get(url, (Dictionary <string, string>)null, false, currentDefaultVmName, 0, 1, 0, false, "bgp");
         AppRequirementsParser.Instance.UpdateOverwriteRequirements(fullJson, translationJson);
     }
     catch (Exception ex)
     {
         Logger.Info("Error Getting Grm json " + ex.ToString());
     }
 }
Example #4
0
 public static void UpdateClickStats(string vmName)
 {
     if (!CloudAnnouncement.sUploadStats)
     {
         return;
     }
     new Thread((ThreadStart)(() =>
     {
         try
         {
             if (BstHttpClient.Get(string.Format("{0}/updateAnnouncementStats", (object)RegistryManager.Instance.Host), new Dictionary <string, string>()
             {
                 {
                     "x_last_msg_id",
                     Convert.ToString(CloudAnnouncement.sMsgId)
                 }
             }, false, vmName, 0, 1, 0, false, "bgp") != null)
             {
                 return;
             }
             Logger.Info("Could not send click stats.");
         }
         catch (Exception ex)
         {
             Logger.Error("Failed to send click stats: " + ex.ToString());
         }
     }))
     {
         IsBackground = true
     }.Start();
 }
Example #5
0
 private static void SendPromotionStats(Dictionary <BootPromotion, int> bootPromos)
 {
     try
     {
         Dictionary <string, string> data = new Dictionary <string, string>()
         {
             {
                 "prod_ver",
                 RegistryManager.Instance.ClientVersion
             },
             {
                 "eng_ver",
                 RegistryManager.Instance.Version
             },
             {
                 "guid",
                 RegistryManager.Instance.UserGuid
             },
             {
                 "locale",
                 RegistryManager.Instance.UserSelectedLocale
             },
             {
                 "oem",
                 RegistryManager.Instance.Oem
             },
             {
                 "partner",
                 RegistryManager.Instance.Partner
             },
             {
                 "campaign_json",
                 RegistryManager.Instance.CampaignJson
             }
         };
         List <BootBanner> bootBannerList = new List <BootBanner>();
         foreach (KeyValuePair <BootPromotion, int> bootPromo in bootPromos)
         {
             bootBannerList.Add(new BootBanner()
             {
                 Frequency = bootPromo.Value.ToString((IFormatProvider)CultureInfo.InvariantCulture),
                 ClickActionPackagename = bootPromo.Key.ExtraPayload["click_action_packagename"],
                 ClickGenericAction     = bootPromo.Key.ExtraPayload["click_generic_action"],
                 ClickActionValue       = bootPromo.Key.ExtraPayload["click_action_value"],
                 Id         = bootPromo.Key.Id,
                 ButtonText = bootPromo.Key.ButtonText,
                 Order      = bootPromo.Key.Order.ToString((IFormatProvider)CultureInfo.InvariantCulture),
                 ImageUrl   = bootPromo.Key.ImageUrl,
                 HashTags   = bootPromo.Key.ExtraPayload["hash_tags"]
             });
         }
         data.Add("boot_banners", JsonConvert.SerializeObject((object)bootBannerList));
         BstHttpClient.Post(WebHelper.GetUrlWithParams(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "{0}/{1}", (object)RegistryManager.Instance.Host, (object)"bs4/stats/client_boot_promotion_stats"), (string)null, (string)null, (string)null), data, (Dictionary <string, string>)null, false, BlueStacks.Common.Strings.CurrentDefaultVmName, 0, 1, 0, false, "bgp");
     }
     catch (Exception ex)
     {
         Logger.Error(nameof(SendPromotionStats), (object)ex);
     }
 }
 private static void StartZygote()
 {
     BstHttpClient.Post(string.Format("http://127.0.0.1:{0}/startzygote", (object)RegistryManager.Instance.DefaultGuest.FrontendServerPort), new Dictionary <string, string>()
     {
         {
             "vmName",
             Strings.CurrentDefaultVmName
         }
     }, (Dictionary <string, string>)null, false, Strings.CurrentDefaultVmName, 0, 1, 0, false, "bgp");
 }
 private void GetPreDefinedProfilesFromCloud()
 {
     new Thread((ThreadStart)(() =>
     {
         try
         {
             this.GetCurrentDeviceProfileFromAndroid(this.ParentWindow.mVmName);
             if (this.mPreDefinedProfilesList.Count == 0 || this.mMobileOperatorsList.Count == 0)
             {
                 string url = string.Format((IFormatProvider)CultureInfo.InvariantCulture, "{0}/{1}/{2}", (object)RegistryManager.Instance.Host, (object)"bs4", (object)"get_device_profile_list");
                 Dictionary <string, string> commonPostData = WebHelper.GetCommonPOSTData();
                 commonPostData.Add("ca_code", Utils.GetValueInBootParams("caCode", this.ParentWindow.mVmName, "", "bgp"));
                 Dictionary <string, string> data = commonPostData;
                 string mVmName = this.ParentWindow.mVmName;
                 JObject jobject1 = JObject.Parse(BstHttpClient.Post(url, data, (Dictionary <string, string>)null, false, mVmName, 0, 1, 0, false, "bgp"));
                 if (jobject1 == null || !(bool)jobject1["success"])
                 {
                     return;
                 }
                 if (!JsonExtensions.IsNullOrEmptyBrackets(jobject1["device_profile_list"].ToString()))
                 {
                     foreach (JObject jobject2 in jobject1["device_profile_list"].ToArray <JToken>())
                     {
                         this.mPreDefinedProfilesList[jobject2["pcode"].ToString()] = jobject2["display_name"].ToString();
                     }
                 }
                 if (jobject1.ContainsKey("ca_selector_list") && !JsonExtensions.IsNullOrEmptyBrackets(jobject1["ca_selector_list"].ToString()))
                 {
                     foreach (JObject jobject2 in jobject1["ca_selector_list"].ToArray <JToken>())
                     {
                         this.mMobileOperatorsList[jobject2["ca_selector"].ToString()] = jobject2["display_name"].ToString();
                     }
                 }
                 this.AddPreDefinedProfilesinComboBox();
             }
             else
             {
                 this.AddPreDefinedProfilesinComboBox();
             }
         }
         catch (Exception ex)
         {
             Logger.Error("Error while getting device profile from cloud : " + ex.ToString());
             this.ChangeNoInternetGridVisibility(true);
         }
     }))
     {
         IsBackground = true
     }.Start();
 }
Example #8
0
 public static bool ShowAnnouncement(string vmName)
 {
     if (!Features.IsFeatureEnabled(1UL))
     {
         Logger.Debug("Broadcast message feature disabled. Ignoring...");
         return(false);
     }
     Logger.Info("Checking for announcement");
     try
     {
         if (Directory.Exists(CloudAnnouncement.Dir))
         {
             string[] files = Directory.GetFiles(CloudAnnouncement.Dir);
             for (int index = 0; index < files.Length; ++index)
             {
                 try
                 {
                     if (System.IO.File.Exists(files[index]))
                     {
                         System.IO.File.Delete(files[index]);
                     }
                 }
                 catch (Exception ex)
                 {
                     Logger.Error("Failed to delete file. err: " + ex.Message);
                 }
             }
         }
         else
         {
             Directory.CreateDirectory(CloudAnnouncement.Dir);
         }
     }
     catch (Exception ex)
     {
         Logger.Error("Failed to delete/create announcement dir. err: " + ex.Message);
         if (!Directory.Exists(CloudAnnouncement.Dir))
         {
             Directory.CreateDirectory(CloudAnnouncement.Dir);
         }
     }
     return(CloudAnnouncement.ShowAnnouncementResponse(BstHttpClient.Get(string.Format("{0}/getAnnouncement", (object)RegistryManager.Instance.Host), new Dictionary <string, string>()
     {
         {
             "x_locale",
             CultureInfo.CurrentCulture.Name.ToLower()
         }
     }, false, vmName, 0, 1, 0, false, "bgp"), vmName));
 }
 internal static void SendStats(
     string url,
     Dictionary <string, string> data,
     Dictionary <string, string> headers = null,
     string vmname = "")
 {
     try
     {
         BstHttpClient.Post(url, data, headers, false, vmname, 0, 1, 0, false, "bgp");
     }
     catch (Exception ex)
     {
         Logger.Info("Failed to send stats for : " + url + ". Reason : " + ex.ToString());
     }
 }
        public static void ReportUninstallFailedStats(string uninstallEvent)
        {
            Dictionary <string, string> commonData = UninstallerStats.GetCommonData(uninstallEvent);

            commonData.Add("failure_reason", UninstallerStats.ParseEnumToString(UninstallerStats.UninstallerComment));
            try
            {
                Logger.Debug("Response for uninstall failed logs upload : " + BstHttpClient.HTTPGaeFileUploader(UninstallerStats.UninstallerStatsUrl, commonData, (Dictionary <string, string>)null, UninstallerProperties.LogFilePath, "text/plain", false, (string)null));
            }
            catch (Exception ex)
            {
                Logger.Error("Failed to upload uninstall failed logs.");
                Logger.Error(ex.ToString());
            }
        }
        internal JToken GetPostBootData()
        {
            JToken jtoken = (JToken)null;

            try
            {
                string json = BstHttpClient.Get(this.Url, (Dictionary <string, string>)null, false, "Android", 0, 1, 0, false, "bgp");
                Logger.Debug("Postboot data Url: " + this.Url);
                jtoken = JToken.Parse(json);
            }
            catch (Exception ex)
            {
                Logger.Error("Error Getting Post Boot Data err: " + ex.ToString());
            }
            return(jtoken);
        }
        private void _bgGetUpdateDetails_DoWork(object sender, DoWorkEventArgs e)
        {
            JToken jtoken = (JToken)null;

            try
            {
                jtoken = JToken.Parse(BstHttpClient.Post(RegistryManager.Instance.Host + "/bs4/check_upgrade?", this.CreateRequestData(), (Dictionary <string, string>)null, false, "Android", 0, 1, 0, false, "bgp"));
                Logger.Info("Response received for check for update: " + Environment.NewLine + jtoken?.ToString());
            }
            catch (Exception ex)
            {
                Logger.Error("Failed to get oem err: {0}", (object)ex.Message);
            }
            finally
            {
                e.Result = (object)jtoken;
            }
        }
Example #13
0
 internal static void RunCommand(
     KeyValuePair <string, SerializableDictionary <string, string> > item)
 {
     try
     {
         string key = item.Key;
         Dictionary <string, string> data = new Dictionary <string, string>();
         foreach (KeyValuePair <string, string> keyValuePair in (Dictionary <string, string>)item.Value)
         {
             data.Add(keyValuePair.Key, keyValuePair.Value);
         }
         string url = string.Format("http://127.0.0.1:{0}/{1}", (object)Utils.GetBstCommandProcessorPort(MultiInstanceStrings.VmName), (object)key);
         Logger.Info("The url being hit is {0}", (object)url);
         Logger.Info("Resp: {0}", (object)BstHttpClient.Post(url, data, (Dictionary <string, string>)null, false, MultiInstanceStrings.VmName, 500, 1, 0, false, "bgp"));
     }
     catch (Exception ex)
     {
         Logger.Error("Exception in SendKeymappingFiledownloadRequest. Err : " + ex.ToString());
     }
 }
 internal static void HandleUsageNotification(JObject resJson, string vmName)
 {
     try
     {
         string result           = "";
         string jsonObjectString = JSONUtils.GetJSONObjectString(AppUsageTimer.GetRealtimeDictionary());
         JObject.Parse(resJson["bluestacks_notification"][(object)"payload"].ToString()).AssignStringIfContains("handler", ref result);
         string url = WebHelper.GetServerHost() + "/v2/" + result;
         Dictionary <string, string> dictionary = new Dictionary <string, string>()
         {
             ["oem"]         = "bgp",
             ["client_ver"]  = RegistryManager.Instance.ClientVersion,
             ["engine_ver"]  = RegistryManager.Instance.Version,
             ["guid"]        = RegistryManager.Instance.UserGuid,
             ["locale"]      = RegistryManager.Instance.UserSelectedLocale,
             ["partner"]     = RegistryManager.Instance.Partner,
             ["campaignMD5"] = RegistryManager.Instance.CampaignMD5
         };
         if (!string.IsNullOrEmpty(RegistryManager.Instance.RegisteredEmail))
         {
             dictionary["email"] = RegistryManager.Instance.RegisteredEmail;
         }
         dictionary["usage_data"] = jsonObjectString;
         if (!dictionary.ContainsKey("current_app"))
         {
             dictionary.Add("current_app", BlueStacksUIUtils.DictWindows[vmName].mTopBar.mAppTabButtons.SelectedTab.PackageName);
         }
         else
         {
             dictionary["current_app"] = BlueStacksUIUtils.DictWindows[vmName].mTopBar.mAppTabButtons.SelectedTab.PackageName;
         }
         Dictionary <string, string> data = dictionary;
         string empty = string.Empty;
         Logger.Info("real time app usage response:" + BstHttpClient.Post(url, data, (Dictionary <string, string>)null, false, empty, 0, 1, 0, false, "bgp"));
     }
     catch (Exception ex)
     {
         Logger.Error("Exception in handling usage notification" + ex.ToString());
     }
 }
        public static void SendStats(string uninstallEvent, Dictionary <string, string> extraData = null)
        {
            Dictionary <string, string> commonData = UninstallerStats.GetCommonData(uninstallEvent);

            if (extraData != null)
            {
                foreach (KeyValuePair <string, string> keyValuePair in extraData)
                {
                    commonData.Add(keyValuePair.Key, keyValuePair.Value);
                }
            }
            try
            {
                string str = BstHttpClient.Post(UninstallerStats.UninstallerStatsUrl, commonData, (Dictionary <string, string>)null, false, (string)null, 0, 1, 0, false, "bgp");
                Logger.Debug(string.Format("Response for event {0}: {1}", (object)uninstallEvent, (object)str));
            }
            catch (Exception ex)
            {
                Logger.Error("Failed to send stats for event: " + uninstallEvent);
                Logger.Error(ex.ToString());
            }
        }
        private static void CheckVtxAndShowPopup()
        {
            Logger.Info("In CheckVtxAndShowPopup");
            int    systemInfoStats2 = RegistryManager.Instance.SystemInfoStats2;
            string deviceCaps       = RegistryManager.Instance.DeviceCaps;

            if (systemInfoStats2 == 1 && !deviceCaps.Equals(""))
            {
                Logger.Info("Sending DeviceCaps stats");
                Dictionary <string, string> data = new Dictionary <string, string>();
                Logger.Info("DeviceCaps: " + deviceCaps);
                data.Add("data", deviceCaps);
                data.Add("install_id", RegistryManager.Instance.InstallID);
                try
                {
                    BstHttpClient.Post(RegistryManager.Instance.Host + "/stats/systeminfostats2", data, (Dictionary <string, string>)null, false, MultiInstanceStrings.VmName, 0, 1, 0, false, "bgp");
                    RegistryManager.Instance.SystemInfoStats2 = 0;
                }
                catch (Exception ex)
                {
                    Logger.Error("Exception in Sending systeminfostats2. Err : " + ex.ToString());
                }
            }
            try
            {
                JObject jobject = JObject.Parse(deviceCaps);
                if (!Oem.Instance.IsVTPopupEnabled || !jobject["cpu_hvm"].ToString().Equals("True", StringComparison.OrdinalIgnoreCase) || !jobject["bios_hvm"].ToString().Equals("False", StringComparison.OrdinalIgnoreCase) || !jobject["engine_enabled"].ToString().Equals("legacy", StringComparison.OrdinalIgnoreCase) && !jobject["engine_enabled"].ToString().Equals("raw", StringComparison.OrdinalIgnoreCase))
                {
                    return;
                }
                AndroidBootUp.ShowVtxPopup();
            }
            catch (Exception ex)
            {
                Logger.Error("Exception in showing vtxpopup {0}. Err : ", (object)ex.ToString());
            }
        }
Example #17
0
        private JToken GetInstanceWisePostBootData(string vmName, string campaignId = "")
        {
            JToken jtoken = (JToken)null;

            try
            {
                Dictionary <string, string> data = new Dictionary <string, string>()
                {
                    {
                        "all_installed_apps",
                        Utils.GetInstalledAppDataFromAllVms()
                    }
                };
                data.Add("current_vm", "vm" + Utils.GetVmIdFromVmName(vmName));
                string json = string.IsNullOrEmpty(campaignId) ? BstHttpClient.Post(this.Url, data, (Dictionary <string, string>)null, false, "Android", 0, 1, 0, false, "bgp") : BstHttpClient.Post(this.Url + "&feature_campaign_id=" + campaignId, data, (Dictionary <string, string>)null, false, "Android", 0, 1, 0, false, "bgp");
                Logger.Debug("PostBoot Instance Specific data Url: " + this.Url);
                jtoken = JToken.Parse(json);
            }
            catch (Exception ex)
            {
                Logger.Error("Error Getting Post Boot Instance Data err: " + ex.ToString());
            }
            return(jtoken);
        }
        private static JToken GetGuidanceCloudInfoData()
        {
            JToken jtoken = (JToken)null;

            try
            {
                string urlWithParams = WebHelper.GetUrlWithParams(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "{0}/{1}/{2}", (object)RegistryManager.Instance.Host, (object)"bs4", (object)"guidance_window"), (string)null, (string)null, (string)null);
                string json          = BstHttpClient.Post(urlWithParams, new Dictionary <string, string>()
                {
                    {
                        "app_pkgs",
                        GuidanceCloudInfoManager.GetInstalledAppDataFromAllVms()
                    }
                }, (Dictionary <string, string>)null, false, "Android", 0, 1, 0, false, "bgp");
                Logger.Debug("Guidance Cloud Info Url: " + urlWithParams);
                Logger.Debug("Guidance Cloud Info Response: " + json);
                jtoken = JToken.Parse(json);
            }
            catch (Exception ex)
            {
                Logger.Warning("Error Getting GetGuidanceCloudInfoData " + ex.ToString());
            }
            return(jtoken);
        }
 public void GetTranslateImage(Bitmap bitmap)
 {
     if (bitmap == null)
     {
         return;
     }
     this.httpBackGroundThread = new Thread((ThreadStart)(() =>
     {
         using (MemoryStream memoryStream = new MemoryStream())
         {
             try
             {
                 bitmap.Save((Stream)memoryStream, ImageFormat.Jpeg);
                 memoryStream.Position = 0L;
                 Dictionary <string, object> parameters = new Dictionary <string, object>();
                 string a = RegistryManager.Instance.UserSelectedLocale.Substring(0, 2);
                 if (string.Equals(a, "zh-CN", StringComparison.InvariantCulture) || string.Equals(a, "zh-TW", StringComparison.InvariantCulture))
                 {
                     a = RegistryManager.Instance.UserSelectedLocale;
                 }
                 if (!string.IsNullOrEmpty(RegistryManager.Instance.TargetLocale))
                 {
                     a = RegistryManager.Instance.TargetLocale;
                 }
                 parameters.Add("locale", (object)a);
                 parameters.Add("inputImage", (object)new FormFile()
                 {
                     Name = "image.jpg",
                     ContentType = "image/jpeg",
                     Stream = (Stream)memoryStream
                 });
                 parameters.Add("oem", (object)RegistryManager.Instance.Oem);
                 parameters.Add("guid", (object)RegistryManager.Instance.UserGuid);
                 parameters.Add("prod_ver", (object)RegistryManager.Instance.ClientVersion);
                 string str1 = Convert.ToBase64String(memoryStream.ToArray()) + RegistryManager.Instance.UserGuid + "BstTranslate";
                 _MD5 md5 = new _MD5()
                 {
                     Value = str1
                 };
                 parameters.Add("token", (object)md5.FingerPrint);
                 string url = string.Format((IFormatProvider)CultureInfo.InvariantCulture, "{0}/{1}", (object)RegistryManager.Instance.Host, (object)"/translate/postimage");
                 if (!string.IsNullOrEmpty(RegistryManager.Instance.TargetLocaleUrl))
                 {
                     url = RegistryManager.Instance.TargetLocaleUrl;
                 }
                 string empty = string.Empty;
                 byte[] dataArray = (byte[])null;
                 string str2;
                 try
                 {
                     str2 = BstHttpClient.PostMultipart(url, parameters, out dataArray);
                 }
                 catch (Exception ex)
                 {
                     Logger.Error("error while downloading translated image.." + ex.ToString());
                     str2 = "error";
                 }
                 if (str2.Contains("error"))
                 {
                     this.Dispatcher.Invoke((Delegate)(() =>
                     {
                         this.mLoadingImage.Visibility = Visibility.Collapsed;
                         this.mBootText.Text = LocaleStrings.GetLocalizedString("STRING_SOME_ERROR_OCCURED", "");
                     }));
                 }
                 else
                 {
                     this.Dispatcher.Invoke((Delegate)(() =>
                     {
                         this.mFrontEndImage.Source = (ImageSource)ImageUtils.ByteArrayToImage(dataArray);
                         this.mFrontEndImage.ReloadImages();
                         this.mFrontEndImage.Visibility = Visibility.Visible;
                         this.mTopBar.Visibility = Visibility.Visible;
                         this.mLoadingImage.Visibility = Visibility.Collapsed;
                         this.mBootText.Visibility = Visibility.Collapsed;
                     }));
                 }
             }
             catch (Exception ex)
             {
                 Logger.Error("Error in GetTranslateImage " + ex?.ToString());
                 this.Dispatcher.Invoke((Delegate)(() =>
                 {
                     this.mLoadingImage.Visibility = Visibility.Collapsed;
                     this.mBootText.Text = LocaleStrings.GetLocalizedString("STRING_SOME_ERROR_OCCURED", "");
                 }));
             }
         }
     }))
     {
         IsBackground = true
     };
     this.httpBackGroundThread.Start();
 }
        private static BlueStacksUpdateData CheckForUpdate(bool isManualCheck)
        {
            BlueStacksUpdateData stacksUpdateData = new BlueStacksUpdateData();

            try
            {
                string urlWithParams = WebHelper.GetUrlWithParams(WebHelper.GetServerHost() + "/check_upgrade", (string)null, (string)null, (string)null);
                Logger.Debug("The URL for checking upgrade: {0}", (object)urlWithParams);
                string osName;
                SystemUtils.GetOSInfo(out osName, out string _, out string _);
                string str = InstallerArchitectures.AMD64;
                if (!SystemUtils.IsOs64Bit())
                {
                    str = InstallerArchitectures.X86;
                }
                Dictionary <string, string> data = new Dictionary <string, string>()
                {
                    {
                        "installer_arch",
                        str
                    },
                    {
                        "os",
                        osName
                    },
                    {
                        "manual_check",
                        isManualCheck.ToString((IFormatProvider)CultureInfo.InvariantCulture)
                    }
                };
                string json = BstHttpClient.Post(urlWithParams, data, (Dictionary <string, string>)null, false, string.Empty, 5000, 1, 0, false, "bgp");
                Logger.Info("Response received for check for update: " + Environment.NewLine + json);
                JObject jobject = JObject.Parse(json);
                if (jobject["update_available"].ToString().Equals("true", StringComparison.InvariantCultureIgnoreCase) && RegistryManager.Instance.FailedUpgradeVersion != jobject["update_details"][(object)"client_version"].ToString())
                {
                    stacksUpdateData.IsUpdateAvailble = true;
                    stacksUpdateData.UpdateType       = jobject["update_details"][(object)"upgrade_type"].ToString();
                    stacksUpdateData.IsFullInstaller  = jobject["update_details"][(object)"is_full_installer"].ToObject <bool>();
                    stacksUpdateData.Md5                   = jobject["update_details"][(object)"md5"].ToString();
                    stacksUpdateData.ClientVersion         = jobject["update_details"][(object)"client_version"].ToString();
                    stacksUpdateData.EngineVersion         = jobject["update_details"][(object)"engine_version"].ToString();
                    stacksUpdateData.DownloadUrl           = jobject["update_details"][(object)"download_url"].ToString();
                    stacksUpdateData.DetailedChangeLogsUrl = jobject["update_details"][(object)"detailed_changelogs_url"].ToString();
                    if (!Directory.Exists(RegistryManager.Instance.SetupFolder))
                    {
                        Directory.CreateDirectory(RegistryManager.Instance.SetupFolder);
                    }
                    stacksUpdateData.UpdateDownloadLocation       = !stacksUpdateData.IsFullInstaller ? Path.Combine(RegistryManager.Instance.SetupFolder, "BlueStacksInstaller_" + stacksUpdateData.ClientVersion + "_client.zip") : Path.Combine(RegistryManager.Instance.SetupFolder, "BlueStacksInstaller_" + stacksUpdateData.ClientVersion + "_full.exe");
                    RegistryManager.Instance.DownloadedUpdateFile = stacksUpdateData.UpdateDownloadLocation;
                    BlueStacksUpdater.sBstUpdateData = stacksUpdateData;
                    BlueStacksUpdater.SUpdateState   = BlueStacksUpdater.UpdateState.UPDATE_AVAILABLE;
                }
                return(stacksUpdateData);
            }
            catch (Exception ex)
            {
                Logger.Warning("Got error in checking for upgrade: {0}", (object)ex.ToString());
                return(new BlueStacksUpdateData()
                {
                    IsTryAgain = true
                });
            }
        }