mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-05-30 19:54:14 -04:00
* Added some basic OPDS implementation * Fixed an issue with feed href * More changes * Added library routes and moved user code to a method so we can hack in fixed code without authentication * Images now load on the OPDS reusing our existing Image infrastructure. * Added the ability to download and moved some download code to a dedicated service * Download is working, pagination is implemented. * Refactored libraries to use pagination * Laid foundation for OpenSearch implementation * Fixed up some serialization issues and some old code that wasn't referencing helper methods * Ensure chapters are sorted when we send them over OPDS * OpenSearch implemented * Removed any support for OPDS-PS due to lack of apps supporting it. * Don't distribute development.json nor stats directory on build. * Implemented In Progress feed as well. * Ability to enable OPDS for server. OPDS now accepts initial call as POST in case app uses username/password. * UI now properly renders state for OPDS enablement. Added Collections routes. * Fixed pagination startIndex on OPDS feeds when there is less than 1 page. * Chunky Reader now works. It only accepts UTF-8 encodings * More Chunky fixes * More chunky changes, such a fussy client. * Implemented the ability to have a custom api key assigned to a user and use that api key as your authentication token against OPDS routing. * Implemented the ability to reset your API Key * Fixed favicon not being sent back correctly * Fixed an issue where images wouldn't send on OPDS feed. * Implemented Page streaming and fixed a pagination bug * Hooked in the ability to save progress in Kavita when Page Streaming
56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
using System;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Json;
|
|
using System.Threading.Tasks;
|
|
using API.DTOs.Stats;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace API.Services.Clients
|
|
{
|
|
public class StatsApiClient
|
|
{
|
|
private readonly HttpClient _client;
|
|
private readonly ILogger<StatsApiClient> _logger;
|
|
#pragma warning disable S1075
|
|
private const string ApiUrl = "http://stats.kavitareader.com";
|
|
#pragma warning restore S1075
|
|
|
|
public StatsApiClient(HttpClient client, ILogger<StatsApiClient> logger)
|
|
{
|
|
_client = client;
|
|
_logger = logger;
|
|
_client.Timeout = TimeSpan.FromSeconds(30);
|
|
}
|
|
|
|
public async Task SendDataToStatsServer(UsageStatisticsDto data)
|
|
{
|
|
var responseContent = string.Empty;
|
|
|
|
try
|
|
{
|
|
using var response = await _client.PostAsJsonAsync(ApiUrl + "/api/InstallationStats", data);
|
|
|
|
responseContent = await response.Content.ReadAsStringAsync();
|
|
|
|
response.EnsureSuccessStatusCode();
|
|
}
|
|
catch (HttpRequestException e)
|
|
{
|
|
var info = new
|
|
{
|
|
dataSent = data,
|
|
response = responseContent
|
|
};
|
|
|
|
_logger.LogError(e, "KavitaStats did not respond successfully. {Content}", info);
|
|
throw;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError(e, "An error happened during the request to KavitaStats");
|
|
throw;
|
|
}
|
|
}
|
|
}
|
|
}
|