private void ParseNetflixStatus(string statusMessage, string action) { var e = new NetflixEventArgs { Action = action, Message = statusMessage ?? "Error" }; if (!string.IsNullOrWhiteSpace(statusMessage)) { // Extract the actual data from the status message (it might be a raw message from a socket) var statusMessageClean = statusMessage.Substring(statusMessage.IndexOf("<?xml")); var xRoot = new XmlRootAttribute { ElementName = "config", IsNullable = true }; var serializer = new XmlSerializer(typeof(NetflixConfig), xRoot); e.Config = ((NetflixConfig)serializer.Deserialize(new StringReader(statusMessageClean))); if (e.Config != null) { e.CountryCode = e.Config.country?.ToLower(); e.GeoLocationCountry = e.Config.geolocationcountry?.ToLower(); } } OnNetflixStatus(e); }
private void _netflixStatusChecker_NetflixStatus(object sender, NetflixEventArgs e) { var lines = new List <string>(); lines.Add(e.Action + " (" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ")"); lines.AddRange(new[] { "CountryCode: " + e.CountryCode, "GeoLocation: " + e.GeoLocationCountry, }); lines.Add("--------------"); foreach (var line in lines) { tbNetflixLog.AppendText(line + Environment.NewLine); } var selectedCountry = cmbNetflixRegionPicker.SelectedItem as CountryCode; if (selectedCountry == null || e.Config == null) { return; } btnNetflixCountry.Image = selectedCountry.Code.Equals(e.CountryCode, StringComparison.OrdinalIgnoreCase) ? _imageOK : _imageError; btnNetflixGeoLocation.Image = selectedCountry.Code.Equals(e.GeoLocationCountry, StringComparison.OrdinalIgnoreCase) ? _imageOK : _imageError; }
protected virtual void OnNetflixStatus(NetflixEventArgs e) { NetflixStatus?.Invoke(this, e); }