From 863f708ed17b3763ed7b48f35412615a1c24a13d Mon Sep 17 00:00:00 2001 From: Serraniel Date: Wed, 1 Mar 2023 16:33:54 +0100 Subject: [PATCH] Starts simplifying code interfaces to fetch sets --- src/Client/ApiClient.cs | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/Client/ApiClient.cs b/src/Client/ApiClient.cs index 079d0c2..939040b 100644 --- a/src/Client/ApiClient.cs +++ b/src/Client/ApiClient.cs @@ -1,12 +1,13 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Net.Http.Json; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; -using JpnCardsPokemonSdk.Client.Endpoints; +using JpnCardsPokemonSdk.Api; using JpnCardsPokemonSdk.Client.Responses; namespace JpnCardsPokemonSdk.Client; @@ -35,6 +36,18 @@ public class ApiClient new ProductHeaderValue("JpnCardsPokemonSdkCS", GetType().Assembly.GetName().Version?.ToString()))); } + private async Task FetchInternalAsync(string requestUri) + { + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + IncludeFields = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + }; + + return await _client.GetFromJsonAsync(requestUri, options); + } + public async Task FetchDataAsync(string requestUri) where TResponseType : IApiResponse, new() { @@ -62,6 +75,29 @@ public class ApiClient return result; } + private string SetQuery(string? filter) + { + var result = "set"; + + return !string.IsNullOrEmpty(filter) ? $"{result}/{filter.TrimStart('/')}" : result; + } + + public async Task> FetchSetsAsync() + { + return await FetchInternalAsync>(SetQuery(null)) ?? Enumerable.Empty(); + } + + public async Task FetchSetById(int id) + { + return await FetchInternalAsync(SetQuery(id.ToString())); + } + + public async Task FetchSetByUuid(int uuid) + { + return await FetchInternalAsync(SetQuery("uuid/" + uuid)); + } + + /* public async Task?> FetchDataAsync(string? query = null, int page = 1) where T : EndpointObject { @@ -82,5 +118,5 @@ public class ApiClient var endpoint = EndpointFactory.GetApiEndpoint(); return await FetchDataAsync, T>($"{endpoint.ApiUri()}/uuid={uuid}"); - } + }*/ } \ No newline at end of file