Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Net.Http;
- using System.Net.Http.Json;
- using System.Text.Json.Serialization;
- using System.Threading.Tasks;
- namespace Todo.Services;
- public class GithubVersionService
- {
- private static HttpClient _client = new();
- private readonly string _url = "https://api.github.com/repos/mekasu0124/Todo/releases/latest";
- private readonly string versionFile = Path.Combine(Directory.GetCurrentDirectory(), "Services/version.txt");
- public record VersionData(string CurrentVersion, string LatestVersion, DateTime ReleaseDate, bool IsNewer);
- public async Task<VersionData> CheckVersion()
- {
- _client.DefaultRequestHeaders.UserAgent.TryParseAdd("request");
- try
- {
- var data = await _client.GetFromJsonAsync<ReleaseData>(_url);
- string version = File.ReadAllText(versionFile);
- return new VersionData(data.TagName, version, data.ReleaseDate, data.TagName != version);
- }
- catch (HttpRequestException ex)
- {
- return new VersionData("Exception", ex.Message, DateTime.Now, false);
- }
- }
- }
- public class ReleaseData
- {
- [JsonPropertyName("tag_name")]
- public string TagName { get; set; }
- [JsonPropertyName("published_at")]
- public DateTime ReleaseDate { get; set; }
- }
Advertisement
Add Comment
Please, Sign In to add comment