diff --git a/OF DL.Core/Services/ApiService.cs b/OF DL.Core/Services/ApiService.cs index 49e4c20..cf5871b 100644 --- a/OF DL.Core/Services/ApiService.cs +++ b/OF DL.Core/Services/ApiService.cs @@ -2755,11 +2755,11 @@ public class ApiService(IAuthService authService, IConfigService configService, protected async Task BuildHeaderAndExecuteRequests(Dictionary getParams, string endpoint, - HttpClient client) + HttpClient client, HttpMethod? method = null, object? reqBody = null) { Log.Debug("Calling BuildHeaderAndExecuteRequests"); - HttpRequestMessage request = await BuildHttpRequestMessage(getParams, endpoint, method); + HttpRequestMessage request = await BuildHttpRequestMessage(getParams, endpoint, method, reqBody); using HttpResponseMessage response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); string body = await response.Content.ReadAsStringAsync(); @@ -2771,15 +2771,21 @@ public class ApiService(IAuthService authService, IConfigService configService, protected Task BuildHttpRequestMessage(Dictionary getParams, - string endpoint) + string endpoint, HttpMethod? method = null, object? reqBody = null) { Log.Debug("Calling BuildHttpRequestMessage"); - string queryParams = "?" + string.Join("&", getParams.Select(kvp => $"{kvp.Key}={kvp.Value}")); + string queryParams = ""; + + if (getParams.Count != 0) + queryParams = "?" + string.Join("&", getParams.Select(kvp => $"{kvp.Key}={kvp.Value}")); Dictionary headers = GetDynamicHeaders($"/api2/v2{endpoint}", queryParams); - HttpRequestMessage request = new(HttpMethod.Get, $"{Constants.ApiUrl}{endpoint}{queryParams}"); + HttpRequestMessage request = new(method ?? HttpMethod.Get, $"{Constants.ApiUrl}{endpoint}{queryParams}"); + + if ((method == HttpMethod.Post || method == HttpMethod.Put || method == HttpMethod.Patch) && reqBody != null) + request.Content = new StringContent(JsonConvert.SerializeObject(reqBody, s_mJsonSerializerSettings), Encoding.UTF8, "application/json"); Log.Debug($"Full request URL: {Constants.ApiUrl}{endpoint}{queryParams}");