public void Reload() { if (IsLoading) { return; } var wc = new WebClient(); wc.DownloadStringCompleted += (sender, args) => { _wc = null; if (args.Cancelled || args.Error != null) { return; } var contentType = wc.ResponseHeaders[HttpResponseHeader.ContentType] .MaskNull().Split(new[] { ';' }, 2)[0]; var jsonContentTypes = new[] { "application/json", "application/x-javascript", "text/javascript", }; if (!jsonContentTypes.Any(s => s.Equals(contentType, StringComparison.OrdinalIgnoreCase))) { return; } using (var sc = new ScriptControl { Language = "JavaScript" }) { var data = sc.Eval("(" + args.Result + ")"); // TODO: JSON sanitization ClosedStatuses = new ReadOnlyCollection <string>( new OleDispatchDriver(data) .Get <IEnumerable>("closed") .Cast <object>() .Select(o => new OleDispatchDriver(o).Get <string>("name")) .ToArray()); } IsLoaded = true; OnLoaded(); }; wc.DownloadStringAsync(IssueOptionsFeedUrl()); _wc = wc; }
public void Reload() { if (IsLoading) return; var wc = new WebClient(); wc.DownloadStringCompleted += (sender, args) => { _wc = null; if (args.Cancelled || args.Error != null) return; var contentType = wc.ResponseHeaders[HttpResponseHeader.ContentType] .MaskNull().Split(new[] { ';' }, 2)[0]; var jsonContentTypes = new[] { "application/json", "application/x-javascript", "text/javascript", }; if (!jsonContentTypes.Any(s => s.Equals(contentType, StringComparison.OrdinalIgnoreCase))) return; using (var sc = new ScriptControl { Language = "JavaScript" }) { var data = sc.Eval("(" + args.Result + ")"); // TODO: JSON sanitization ClosedStatuses = new ReadOnlyCollection<string>( new OleDispatchDriver(data) .Get<IEnumerable>("closed") .Cast<object>() .Select(o => new OleDispatchDriver(o).Get<string>("name")) .ToArray()); } IsLoaded = true; OnLoaded(); }; wc.DownloadStringAsync(IssueOptionsFeedUrl()); _wc = wc; }