13
13
********************************************************************/
14
14
15
15
using System ;
16
- using System . Collections . Generic ;
17
16
using System . Linq ;
18
- using System . Net ;
17
+ using System . Net . Http ;
18
+ using System . Net . Http . Json ;
19
19
using System . Text . RegularExpressions ;
20
- using System . Threading . Tasks ;
21
20
using System . Windows . Forms ;
22
- using Newtonsoft . Json ;
21
+ using Sentry ;
23
22
using Serilog ;
24
23
25
24
namespace SoundSwitch . Framework . Updater
@@ -32,7 +31,6 @@ public class UpdateChecker
32
31
private static readonly Version AppVersion = new Version ( Application . ProductVersion ) ;
33
32
34
33
private readonly Uri _releaseUrl ;
35
- private readonly WebClient _webClient = new WebClient ( ) ;
36
34
public EventHandler < NewReleaseEvent > UpdateAvailable ;
37
35
public bool Beta { get ; set ; }
38
36
@@ -43,25 +41,9 @@ public UpdateChecker(Uri releaseUrl) : this(releaseUrl, false)
43
41
public UpdateChecker ( Uri releaseUrl , bool checkBeta )
44
42
{
45
43
_releaseUrl = releaseUrl ;
46
- _webClient . DownloadStringCompleted += DownloadStringCompleted ;
47
44
Beta = checkBeta ;
48
45
}
49
46
50
- private void DownloadStringCompleted ( object sender , DownloadStringCompletedEventArgs e )
51
- {
52
- if ( e . Error != null )
53
- {
54
- Log . Error ( e . Error , "Exception while getting release" ) ;
55
- return ;
56
- }
57
-
58
- var serverRelease = JsonConvert . DeserializeObject < List < GitHubRelease > > ( e . Result ) ;
59
- if ( ! serverRelease . Any ( ProcessRelease ) )
60
- {
61
- Log . Information ( "No new Version found: {Releases}" , serverRelease ) ;
62
- }
63
- }
64
-
65
47
private bool ProcessRelease ( GitHubRelease serverRelease )
66
48
{
67
49
@@ -73,7 +55,6 @@ private bool ProcessRelease(GitHubRelease serverRelease)
73
55
}
74
56
75
57
var version = new Version ( serverRelease . tag_name . Substring ( 1 ) ) ;
76
- var changelog = Regex . Split ( serverRelease . body , "\r \n |\r |\n " ) ;
77
58
try
78
59
{
79
60
if ( version > AppVersion )
@@ -83,6 +64,7 @@ private bool ProcessRelease(GitHubRelease serverRelease)
83
64
{
84
65
return false ;
85
66
}
67
+ var changelog = Regex . Split ( serverRelease . body , "\r \n |\r |\n " ) ;
86
68
var release = new Release ( version , installer , serverRelease . name ) ;
87
69
release . Changelog . AddRange ( changelog ) ;
88
70
UpdateAvailable ? . Invoke ( this , new NewReleaseEvent ( release ) ) ;
@@ -102,13 +84,14 @@ private bool ProcessRelease(GitHubRelease serverRelease)
102
84
/// </summary>
103
85
public void CheckForUpdate ( )
104
86
{
105
- _webClient . Headers . Add ( "User-Agent" , UserAgent ) ;
106
- Task . Factory . StartNew ( ( ) => _webClient . DownloadStringAsync ( _releaseUrl ) ) ;
87
+ using var httpClient = new HttpClient ( new SentryHttpMessageHandler ( ) ) ;
88
+ var releases = httpClient . GetFromJsonAsync < GitHubRelease [ ] > ( _releaseUrl ) . GetAwaiter ( ) . GetResult ( ) ;
89
+ foreach ( var _ in ( releases ?? Array . Empty < GitHubRelease > ( ) ) . SkipWhile ( release => ! ProcessRelease ( release ) ) ) ;
107
90
}
108
91
109
92
public class NewReleaseEvent : EventArgs
110
93
{
111
- public Release Release { get ; private set ; }
94
+ public Release Release { get ; }
112
95
113
96
public NewReleaseEvent ( Release release )
114
97
{
0 commit comments