public bool GetLatest(ref Release release) { string response = (new System.IO.StreamReader(new System.IO.Compression.GZipStream(request.GetResponse().GetResponseStream(), System.IO.Compression.CompressionMode.Decompress))).ReadToEnd(); List<object> releases = (List<object>)Json.Deserialize(response); Dictionary<string, object> latestRelease = (Dictionary<string, object>)releases[0]; string tag = latestRelease["tag_name"].ToString(); string strVersion = tag.ToLower(); if (strVersion[0] == 'v') { strVersion = strVersion.Substring(1, strVersion.Length - 1); } Version version = null; if (Version.TryParse(strVersion, out version)) { release.Name = latestRelease["name"].ToString(); release.Notes = latestRelease["body"].ToString(); release.Version = version; List<object> assets = (List<object>)latestRelease["assets"]; foreach (Dictionary<string, object> asset in assets) { string name = asset["name"].ToString(); string contentType = asset["content_type"].ToString(); Uri url = new Uri(String.Format("https://github.com/{0}/releases/download/{1}/{2}", repo, tag, name)); release.Files.Add(new Release.File(url, name, contentType, IsUpdate(contentType))); } return true; } return false; }
public static Release GetLatest(IReleaseProvider provider) { Release release = new Release(); provider.GetLatest(ref release); return release; }
void DownloadUpdate(Release.File updateFile) { label1.Text = String.Format("Downloading: {0}", updateFile.FileName); downloader.DownloadFileAsync(updateFile.URL, updateLocation); }