mekasu0124

Untitled

Jan 26th, 2024
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.33 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Net.Http;
  4. using System.Net.Http.Json;
  5. using System.Text.Json.Serialization;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Todo.Services;
  9.  
  10. public class GithubVersionService
  11. {
  12.     private static HttpClient _client = new();
  13.     private readonly string _url = "https://api.github.com/repos/mekasu0124/Todo/releases/latest";
  14.     private readonly string versionFile = Path.Combine(Directory.GetCurrentDirectory(), "Services/version.txt");
  15.     public record VersionData(string CurrentVersion, string LatestVersion, DateTime ReleaseDate, bool IsNewer);
  16.  
  17.     public async Task<VersionData> CheckVersion()
  18.     {
  19.         _client.DefaultRequestHeaders.UserAgent.TryParseAdd("request");
  20.         try
  21.         {
  22.             var data = await _client.GetFromJsonAsync<ReleaseData>(_url);
  23.             string version = File.ReadAllText(versionFile);
  24.             return new VersionData(data.TagName, version, data.ReleaseDate, data.TagName != version);
  25.         }
  26.         catch (HttpRequestException ex)
  27.         {
  28.             return new VersionData("Exception", ex.Message, DateTime.Now, false);
  29.         }
  30.     }
  31. }
  32.  
  33. public class ReleaseData
  34. {
  35.     [JsonPropertyName("tag_name")]
  36.     public string TagName { get; set; }
  37.  
  38.     [JsonPropertyName("published_at")]
  39.     public DateTime ReleaseDate { get; set; }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment