2 using System.Collections.Generic;
9 namespace AppLimit.NetSparkle
11 public class NetSparkleAppCast
13 private NetSparkleConfiguration _config;
14 private String _castUrl;
16 private const String itemNode = "item";
17 private const String enclosureNode = "enclosure";
18 private const String releaseNotesLinkNode = "sparkle:releaseNotesLink";
19 private const String versionAttribute = "sparkle:version";
20 private const String dasSignature = "sparkle:dsaSignature";
21 private const String urlAttribute = "url";
23 public NetSparkleAppCast(String castUrl, NetSparkleConfiguration config)
29 public NetSparkleAppCastItem GetLatestVersion()
31 NetSparkleAppCastItem latestVersion = null;
33 // build a http web request stream
34 WebRequest request = HttpWebRequest.Create(_castUrl);
36 // request the cast and build the stream
37 WebResponse response = request.GetResponse();
39 Stream inputstream = response.GetResponseStream();
41 NetSparkleAppCastItem currentItem = null;
43 XmlTextReader reader = new XmlTextReader(inputstream);
46 if ( reader.NodeType == XmlNodeType.Element)
52 currentItem = new NetSparkleAppCastItem();
55 case releaseNotesLinkNode:
57 currentItem.ReleaseNotesLink = reader.ReadString();
58 currentItem.ReleaseNotesLink = currentItem.ReleaseNotesLink.Trim('\n');
63 currentItem.Version = reader.GetAttribute(versionAttribute);
64 currentItem.DownloadLink = reader.GetAttribute(urlAttribute);
65 currentItem.DSASignature = reader.GetAttribute(dasSignature);
71 else if (reader.NodeType == XmlNodeType.EndElement)
77 if (latestVersion == null)
78 latestVersion = currentItem;
79 else if (currentItem.CompareTo(latestVersion) > 0 )
81 latestVersion = currentItem;
89 // add some other attributes
90 latestVersion.AppName = _config.ApplicationName;
91 latestVersion.AppVersionInstalled = _config.InstalledVersion;