Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -330,11 +330,11 @@ public async Task Turnierplan_Client_Throws_Exception_When_Version_Does_Not_Matc
using var httpClient = new HttpClient(new MockHttpMessageHandler(_ =>
{
var response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.Unauthorized;
response.StatusCode = HttpStatusCode.OK;

if (sendHeader)
{
response.Headers.Add("x-turnierplan-version", "2024.0.0"); // old version that does not exist
response.Headers.Add("X-Turnierplan-Version", "2024.0.0"); // old version that does not exist
}

return response;
Expand Down
7 changes: 6 additions & 1 deletion src/Turnierplan.Adapter/TurnierplanClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public async Task<Tournament> GetTournament(string tournamentId)
var request = new HttpRequestMessage(HttpMethod.Get, $"/api/tournaments/{tournamentId}");
var response = await _httpClient.SendAsync(request).ConfigureAwait(false);

EnsureSuccessResponse(response);
VerifyServerVersion(response);

return await Deserialize<Tournament>(response).ConfigureAwait(false);
Expand All @@ -99,6 +100,7 @@ public async Task<List<TournamentHeader>> GetTournaments(string folderId)
var request = new HttpRequestMessage(HttpMethod.Get, $"/api/tournaments{query}");
var response = await _httpClient.SendAsync(request).ConfigureAwait(false);

EnsureSuccessResponse(response);
VerifyServerVersion(response);

return await Deserialize<List<TournamentHeader>>(response).ConfigureAwait(false);
Expand Down Expand Up @@ -153,13 +155,16 @@ private static void VerifyServerVersion(HttpResponseMessage response)
}
}

private static async Task<T> Deserialize<T>(HttpResponseMessage response)
private static void EnsureSuccessResponse(HttpResponseMessage response)
{
if (response.StatusCode != HttpStatusCode.OK)
{
throw new TurnierplanClientException($"API returned unexpected status code: {response.StatusCode}");
}
}

private static async Task<T> Deserialize<T>(HttpResponseMessage response)
{
var data = await response.Content.ReadFromJsonAsync<T>(__serializerOptions).ConfigureAwait(false);

return data ?? throw new TurnierplanClientException($"Failed to deserialize API response of type '{typeof(T).Name}'.");
Expand Down
Loading