@@ -229,7 +229,7 @@ public async Task LogoutAsync(string id = "Logout", CancellationToken ct = defau
229229 Params = new object ( )
230230 } ;
231231 StringContent requestContent = new StringContent ( JsonConvert . SerializeObject ( requestModel ) , Encoding . UTF8 , "application/json" ) ;
232- SetRequestHeader ( requestContent . Headers ) ;
232+ requestContent . Headers . Add ( "JSESSIONID" , _sessonId ) ;
233233
234234 // Send request
235235 _ = await _client . PostAsync ( ServerUrl + "/WebUntis/jsonrpc.do" , requestContent , ct ) ;
@@ -291,7 +291,7 @@ private async Task<TResult> MakeJSONRPCRequestAsync<TRequest, TResult>(string id
291291 Params = requestParams
292292 } ;
293293 StringContent requestContent = new StringContent ( JsonConvert . SerializeObject ( requestModel ) , Encoding . UTF8 , "application/json" ) ;
294- SetRequestHeader ( requestContent . Headers ) ;
294+ requestContent . Headers . Add ( "JSESSIONID" , _sessonId ) ;
295295
296296 // Send request
297297 HttpResponseMessage response = await _client . PostAsync ( ServerUrl + requestUrl , requestContent , ct ) ;
@@ -322,6 +322,46 @@ private async Task<TResult> MakeJSONRPCRequestAsync<TRequest, TResult>(string id
322322 return responseModel . Result ;
323323 }
324324
325+ /// <summary>
326+ /// Make a GET request to the API
327+ /// </summary>
328+ /// <param name="requestUrl">Url to request</param>
329+ /// <param name="ct">Cnacellation token</param>
330+ /// <returns>The returned content</returns>
331+ /// <exception cref="ObjectDisposedException">Thrown when the instance was disposed</exception>
332+ /// <exception cref="UnauthorizedAccessException">Thrown when the client isn't logged in</exception>
333+ /// <exception cref="HttpRequestException">Thrown when an error happend while the http request</exception>
334+ private async Task < string > MakeAPIGetRequestAsync ( string requestUrl , CancellationToken ct )
335+ {
336+ // Check for disposing
337+ if ( _disposedValue )
338+ throw new ObjectDisposedException ( GetType ( ) . FullName ) ;
339+
340+ // Check if you logged in
341+ if ( ! LoggedIn )
342+ throw new UnauthorizedAccessException ( "You're not logged in" ) ;
343+
344+ HttpRequestMessage request = new HttpRequestMessage ( )
345+ {
346+ Method = HttpMethod . Get ,
347+ RequestUri = new Uri ( ServerUrl + requestUrl )
348+ } ;
349+ request . Headers . Add ( "JSESSIONID" , _sessonId ) ;
350+ request . Headers . Authorization = new AuthenticationHeaderValue ( "Bearer" , _bearerToken ) ;
351+
352+ HttpResponseMessage response = await _client . SendAsync ( request , ct ) ;
353+
354+ // Check cancellation token
355+ if ( ct . IsCancellationRequested )
356+ return default ;
357+
358+ // Verify response
359+ if ( response . StatusCode != HttpStatusCode . OK )
360+ throw new HttpRequestException ( $ "There was an error while the http request (Code: { response . StatusCode } ).") ;
361+
362+ return await response . Content . ReadAsStringAsync ( ) ;
363+ }
364+
325365 /// <summary>
326366 /// Get the bearer auth token for the api authentication
327367 /// </summary>
@@ -335,7 +375,7 @@ private async Task<string> GetBearerTokenAsync(CancellationToken ct)
335375 Method = HttpMethod . Get ,
336376 RequestUri = new Uri ( ServerUrl + "/WebUntis/api/token/new" )
337377 } ;
338- SetRequestHeader ( request . Headers ) ;
378+ request . Headers . Add ( "JSESSIONID" , _sessonId ) ;
339379
340380 HttpResponseMessage response = await _client . SendAsync ( request , ct ) ;
341381
@@ -351,18 +391,6 @@ private async Task<string> GetBearerTokenAsync(CancellationToken ct)
351391 return await response . Content . ReadAsStringAsync ( ) ;
352392 }
353393
354- /// <summary>
355- /// Add the default headers to a WebUntis API request
356- /// </summary>
357- /// <param name="headers">The headers object to add</param>
358- /// <param name="setBearer"><see langword="true"/> if the auth header should be set</param>
359- private void SetRequestHeader ( HttpHeaders headers , bool setBearer = false )
360- {
361- headers . Add ( "JSESSIONID" , _sessonId ) ;
362- if ( setBearer )
363- ( headers as HttpRequestHeaders ) . Authorization = new AuthenticationHeaderValue ( "Bearer" , _bearerToken ) ;
364- }
365-
366394 #region IDisposable
367395 private bool _disposedValue ;
368396
0 commit comments