@@ -19,7 +19,7 @@ internal class WebHelper
1919 {
2020 DefaultRequestHeaders = { { "User-Agent" , "GameVault" } }
2121 } ;
22- private static RequestHeader [ ] AdditionalRequestHeaders ;
22+ private static List < RequestHeader > AdditionalRequestHeaders = new List < RequestHeader > ( ) ;
2323 static WebHelper ( ) { }
2424 internal static void SetCredentials ( string serverUrl , string username , string password )
2525 {
@@ -47,7 +47,7 @@ internal static string GetRefreshToken()
4747 {
4848 return HttpClient . GetRefreshToken ( ) ;
4949 }
50- internal static void SetAdditionalRequestHeaders ( RequestHeader [ ] additionalRequestHeaders )
50+ internal static void SetAdditionalDefaultRequestHeaders ( List < RequestHeader > additionalRequestHeaders )
5151 {
5252 AdditionalRequestHeaders = additionalRequestHeaders ;
5353
@@ -62,40 +62,45 @@ internal static void SetAdditionalRequestHeaders(RequestHeader[] additionalReque
6262 internal static async Task < string > BaseGetAsync ( string url )
6363 {
6464 var response = await BaseHttpClient . GetAsync ( url ) ;
65- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
65+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
6666 return await response . Content . ReadAsStringAsync ( ) ;
6767 }
6868 internal static async Task < string > BasePostAsync ( string url , string payload )
6969 {
7070 var content = new StringContent ( payload , Encoding . UTF8 , "application/json" ) ;
7171 var response = await BaseHttpClient . PostAsync ( url , content ) ;
72- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
72+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
7373 return await response . Content . ReadAsStringAsync ( ) ;
7474 }
7575 internal static async Task < string > BaseSendRequest ( HttpRequestMessage request )
7676 {
7777 var response = await BaseHttpClient . SendAsync ( request ) ;
78- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
78+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
7979 return await response . Content . ReadAsStringAsync ( ) ;
8080 }
8181 #endregion
8282 internal static async Task < string > GetAsync ( string url )
8383 {
8484 var response = await HttpClient . GetAsync ( url , AdditionalRequestHeaders ) ;
85- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
85+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
8686 return await response . Content . ReadAsStringAsync ( ) ;
8787 }
88- internal static async Task < HttpResponseMessage > GetAsync ( string url , HttpCompletionOption option = HttpCompletionOption . ResponseContentRead )
88+ internal static async Task < HttpResponseMessage > GetAsync ( string url , Dictionary < string , string > ? additionalManualRequestHeaders = null , HttpCompletionOption option = HttpCompletionOption . ResponseContentRead )
8989 {
90- var response = await HttpClient . GetAsync ( url , AdditionalRequestHeaders , option ) ;
91- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
90+ List < RequestHeader > additionalHeaders = null ;
91+ if ( additionalManualRequestHeaders is { Count : > 0 } )
92+ {
93+ additionalHeaders = additionalManualRequestHeaders . Select ( h => new RequestHeader { Name = h . Key , Value = h . Value } ) . Concat ( AdditionalRequestHeaders ) . ToList ( ) ;
94+ }
95+ var response = await HttpClient . GetAsync ( url , additionalHeaders ?? AdditionalRequestHeaders , option ) ;
96+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
9297 return response ;
9398 }
9499 internal static async Task < string > PostAsync ( string url , string payload )
95100 {
96101 var content = new StringContent ( payload , Encoding . UTF8 , "application/json" ) ;
97102 var response = await HttpClient . PostAsync ( url , content , AdditionalRequestHeaders ) ;
98- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
103+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
99104 return await response . Content . ReadAsStringAsync ( ) ;
100105 }
101106
@@ -109,20 +114,20 @@ internal static async Task<string> PutAsync(string url, string payload)
109114 internal static async Task < string > DeleteAsync ( string url )
110115 {
111116 var response = await HttpClient . DeleteAsync ( url , AdditionalRequestHeaders ) ;
112- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
117+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
113118 return await response . Content . ReadAsStringAsync ( ) ;
114119 }
115120 public static async Task DownloadImageFromUrlAsync ( string imageUrl , string cacheFile )
116121 {
117122 var response = await HttpClient . GetAsync ( imageUrl , AdditionalRequestHeaders ) ;
118- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
123+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
119124 var imageBytes = await response . Content . ReadAsByteArrayAsync ( ) ;
120125 await File . WriteAllBytesAsync ( cacheFile , imageBytes ) ;
121126 }
122127 public static async Task < BitmapImage > DownloadImageFromUrlAsync ( string imageUrl )
123128 {
124129 var response = await HttpClient . GetAsync ( imageUrl , AdditionalRequestHeaders ) ;
125- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
130+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
126131 var imageData = await response . Content . ReadAsByteArrayAsync ( ) ;
127132 using ( var memoryStream = new MemoryStream ( imageData ) )
128133 {
@@ -135,13 +140,13 @@ public static async Task<BitmapImage> DownloadImageFromUrlAsync(string imageUrl)
135140 return bitmap ;
136141 }
137142 }
138- public static async Task < string > UploadFileAsync ( string apiUrl , Stream imageStream , string fileName , RequestHeader [ ] ? additionalHeaders = null )
143+ public static async Task < string > UploadFileAsync ( string apiUrl , Stream imageStream , string fileName , List < RequestHeader > ? additionalHeaders = null )
139144 {
140145 //Mix request headers
141- RequestHeader [ ] ? mixedHeaders = null ;
146+ List < RequestHeader > ? mixedHeaders = null ;
142147 if ( additionalHeaders != null && AdditionalRequestHeaders != null )
143148 {
144- mixedHeaders = AdditionalRequestHeaders . Concat ( additionalHeaders ) . ToArray ( ) ;
149+ mixedHeaders = AdditionalRequestHeaders . Concat ( additionalHeaders ) . ToList ( ) ;
145150 }
146151 else if ( additionalHeaders == null )
147152 {
@@ -158,7 +163,7 @@ public static async Task<string> UploadFileAsync(string apiUrl, Stream imageStre
158163 imageContent . Headers . ContentType = new MediaTypeHeaderValue ( mimeType ) ;
159164 formData . Add ( imageContent , "file" , fileName ) ;
160165 var response = await HttpClient . PostAsync ( apiUrl , formData , mixedHeaders ) ;
161- await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
166+ await WebExceptionHelper . EnsureSuccessStatusCode ( response ) ;
162167 var responseContent = await response . Content . ReadAsStringAsync ( ) ;
163168 return responseContent ;
164169 }
@@ -184,7 +189,7 @@ public static string RemoveSpecialCharactersFromUrl(string url)
184189 }
185190 return sb . ToString ( ) ;
186191 }
187-
192+
188193 }
189194}
190195
0 commit comments