< Summary

Information
Class: Chronicis.Client.Services.CharacterApiService
Assembly: Chronicis.Client
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Client/Services/CharacterApiService.cs
Line coverage
100%
Covered lines: 3
Uncovered lines: 0
Coverable lines: 3
Total lines: 74
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Client/Services/CharacterApiService.cs

#LineLine coverage
 1using System.Net.Http.Json;
 2using Chronicis.Shared.DTOs;
 3
 4namespace Chronicis.Client.Services;
 5
 6/// <summary>
 7/// Implementation of character claiming API service.
 8/// </summary>
 9public class CharacterApiService : ICharacterApiService
 10{
 11    private readonly HttpClient _http;
 12    private readonly ILogger<CharacterApiService> _logger;
 13
 14    public CharacterApiService(HttpClient http, ILogger<CharacterApiService> logger)
 15    {
 616        _http = http;
 617        _logger = logger;
 618    }
 19
 20    public async Task<List<ClaimedCharacterDto>> GetClaimedCharactersAsync()
 21    {
 22        try
 23        {
 24            var result = await _http.GetFromJsonAsync<List<ClaimedCharacterDto>>("characters/claimed");
 25            return result ?? new List<ClaimedCharacterDto>();
 26        }
 27        catch (Exception ex)
 28        {
 29            _logger.LogError(ex, "Error fetching claimed characters");
 30            return new List<ClaimedCharacterDto>();
 31        }
 32    }
 33
 34    public async Task<bool> ClaimCharacterAsync(Guid characterId)
 35    {
 36        try
 37        {
 38            var response = await _http.PostAsync($"characters/{characterId}/claim", null);
 39            return response.IsSuccessStatusCode;
 40        }
 41        catch (Exception ex)
 42        {
 43            _logger.LogError(ex, "Error claiming character {CharacterId}", characterId);
 44            return false;
 45        }
 46    }
 47
 48    public async Task<bool> UnclaimCharacterAsync(Guid characterId)
 49    {
 50        try
 51        {
 52            var response = await _http.DeleteAsync($"characters/{characterId}/claim");
 53            return response.IsSuccessStatusCode;
 54        }
 55        catch (Exception ex)
 56        {
 57            _logger.LogError(ex, "Error unclaiming character {CharacterId}", characterId);
 58            return false;
 59        }
 60    }
 61
 62    public async Task<CharacterClaimStatusDto?> GetClaimStatusAsync(Guid characterId)
 63    {
 64        try
 65        {
 66            return await _http.GetFromJsonAsync<CharacterClaimStatusDto>($"characters/{characterId}/claim");
 67        }
 68        catch (Exception ex)
 69        {
 70            _logger.LogError(ex, "Error getting claim status for character {CharacterId}", characterId);
 71            return null;
 72        }
 73    }
 74}