Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
                }
        }
Beispiel #3
0
 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;
		}