15
15
using System ;
16
16
using System . Linq ;
17
17
using System . Net . Http ;
18
+ using System . Net . Http . Headers ;
18
19
using System . Net . Http . Json ;
19
20
using System . Text . RegularExpressions ;
20
21
using System . Threading ;
@@ -34,6 +35,8 @@ public class UpdateChecker
34
35
35
36
private readonly Uri _releaseUrl ;
36
37
public EventHandler < NewReleaseEvent > UpdateAvailable ;
38
+ private static readonly ProductInfoHeaderValue ProductValue ;
39
+ private static readonly ProductInfoHeaderValue CommentValue ;
37
40
public bool Beta { get ; set ; }
38
41
39
42
public UpdateChecker ( Uri releaseUrl ) : this ( releaseUrl , false )
@@ -46,6 +49,12 @@ public UpdateChecker(Uri releaseUrl, bool checkBeta)
46
49
Beta = checkBeta ;
47
50
}
48
51
52
+ static UpdateChecker ( )
53
+ {
54
+ ProductValue = new ProductInfoHeaderValue ( Application . ProductName , Application . ProductVersion ) ;
55
+ CommentValue = new ProductInfoHeaderValue ( "(+https://soundwitch.aaflalo.me)" ) ;
56
+ }
57
+
49
58
private bool ProcessRelease ( GitHubRelease serverRelease )
50
59
{
51
60
Log . Information ( "Checking version {version} " , serverRelease ) ;
@@ -66,7 +75,6 @@ private bool ProcessRelease(GitHubRelease serverRelease)
66
75
return false ;
67
76
}
68
77
69
-
70
78
71
79
var changelog = Regex . Split ( serverRelease . body , "\r \n |\r |\n " ) ;
72
80
var release = new Release ( version , installer , serverRelease . name ) ;
@@ -82,13 +90,16 @@ private bool ProcessRelease(GitHubRelease serverRelease)
82
90
83
91
return false ;
84
92
}
85
-
93
+
86
94
/// <summary>
87
95
/// Check for update
88
96
/// </summary>
89
97
public async Task CheckForUpdate ( CancellationToken token )
90
98
{
91
99
using var httpClient = new HttpClient ( new SentryHttpMessageHandler ( ) ) ;
100
+ httpClient . DefaultRequestHeaders . UserAgent . Add ( ProductValue ) ;
101
+ httpClient . DefaultRequestHeaders . UserAgent . Add ( CommentValue ) ;
102
+ httpClient . DefaultRequestHeaders . Accept . Add ( MediaTypeWithQualityHeaderValue . Parse ( "application/json" ) ) ;
92
103
var releases = await httpClient . GetFromJsonAsync < GitHubRelease [ ] > ( _releaseUrl , token ) ;
93
104
foreach ( var release in releases ?? Array . Empty < GitHubRelease > ( ) )
94
105
{
0 commit comments