public IEnumerable <VersionDescription> ParseAppCastString(string data) { var doc = XDocument.Parse(data); var versions = new List <VersionDescription>(); foreach (var item in doc.Descendants("item")) { try { var ver = new VersionDescription { Title = GetStringValue(item.Element("title")), PublishDate = GetDateTimeValue(item.Element("pubDate")), Link = GetUriValue(item.Element("link")), Description = GetContents(item.Element("description")), Enclosures = item.Elements("enclosure").Select(elt => new VersionEnclosure { Url = GetUriValue(elt.Attribute("url")), Length = GetIntValue(elt.Attribute("length")), Type = GetStringValue(elt.Attribute("type")), Title = GetStringValue(elt), InstallerType = GetInstallerTypeValue(elt.Attribute("installer-type")), InstallerPlatform = GetInstallerPlatformValue(elt.Attribute("installer-platform")), } ).ToArray(), }; versions.Add(ver); } catch (ParseErrorException) { //Do nothing } } return(versions); }
public static async Task <DownloadResult> DownloadAsync(VersionDescription version, Action <float> onprogress, CancellationToken ct) { var enclosure = version.Enclosures.First(e => e.InstallerType == Updater.CurrentInstallerType); if (Updater.CurrentInstallerType == InstallerType.Archive || Updater.CurrentInstallerType == InstallerType.ServiceArchive) { return(new DownloadResult(null, version, enclosure)); } using (var client = new System.Net.WebClient()) using (ct.Register(() => client.CancelAsync(), false)) { if (onprogress != null) { client.DownloadProgressChanged += (sender, args) => { onprogress(args.ProgressPercentage / 100.0f); }; } var filepath = System.IO.Path.Combine( GetDownloadPath(), System.IO.Path.GetFileName(enclosure.Url.AbsolutePath)); await client.DownloadFileTaskAsync(enclosure.Url.ToString(), filepath).ConfigureAwait(false); return(new DownloadResult(filepath, version, enclosure)); } }
public DownloadResult(string filepath, VersionDescription version, VersionEnclosure enclosure) { FilePath = filepath; Version = version; Enclosure = enclosure; }
private IEnumerable<VersionDescription> ParseAppCast(string data) { var doc = XDocument.Parse(data); var versions = new List<VersionDescription>(); foreach (var item in doc.Descendants("item")) { try { var ver = new VersionDescription { Title = GetStringValue(item.Element("title")), PublishDate = GetDateTimeValue(item.Element("pubDate")), Link = GetUriValue(item.Element("link")), Description = GetContents(item.Element("description")), Enclosures = item.Elements("enclosure").Select(elt => new VersionEnclosure { Url = GetUriValue(elt.Attribute("url")), Length = GetIntValue(elt.Attribute("length")), Type = GetStringValue(elt.Attribute("type")), Title = GetStringValue(elt), InstallerType = GetInstallerTypeValue(elt.Attribute("installer-type")), } ).ToArray(), }; versions.Add(ver); } catch (ParseErrorException) { //Do nothing } } return versions; }