< 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
0%
Covered lines: 0
Uncovered lines: 27
Coverable lines: 27
Total lines: 74
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
GetClaimedCharactersAsync()0%620%
ClaimCharacterAsync()100%210%
UnclaimCharacterAsync()100%210%
GetClaimStatusAsync()100%210%

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
 014    public CharacterApiService(HttpClient http, ILogger<CharacterApiService> logger)
 15    {
 016        _http = http;
 017        _logger = logger;
 018    }
 19
 20    public async Task<List<ClaimedCharacterDto>> GetClaimedCharactersAsync()
 21    {
 22        try
 23        {
 024            var result = await _http.GetFromJsonAsync<List<ClaimedCharacterDto>>("characters/claimed");
 025            return result ?? new List<ClaimedCharacterDto>();
 26        }
 027        catch (Exception ex)
 28        {
 029            _logger.LogError(ex, "Error fetching claimed characters");
 030            return new List<ClaimedCharacterDto>();
 31        }
 032    }
 33
 34    public async Task<bool> ClaimCharacterAsync(Guid characterId)
 35    {
 36        try
 37        {
 038            var response = await _http.PostAsync($"characters/{characterId}/claim", null);
 039            return response.IsSuccessStatusCode;
 40        }
 041        catch (Exception ex)
 42        {
 043            _logger.LogError(ex, "Error claiming character {CharacterId}", characterId);
 044            return false;
 45        }
 046    }
 47
 48    public async Task<bool> UnclaimCharacterAsync(Guid characterId)
 49    {
 50        try
 51        {
 052            var response = await _http.DeleteAsync($"characters/{characterId}/claim");
 053            return response.IsSuccessStatusCode;
 54        }
 055        catch (Exception ex)
 56        {
 057            _logger.LogError(ex, "Error unclaiming character {CharacterId}", characterId);
 058            return false;
 59        }
 060    }
 61
 62    public async Task<CharacterClaimStatusDto?> GetClaimStatusAsync(Guid characterId)
 63    {
 64        try
 65        {
 066            return await _http.GetFromJsonAsync<CharacterClaimStatusDto>($"characters/{characterId}/claim");
 67        }
 068        catch (Exception ex)
 69        {
 070            _logger.LogError(ex, "Error getting claim status for character {CharacterId}", characterId);
 071            return null;
 72        }
 073    }
 74}