mirror of
https://github.com/freedbygrace/PSOPNSenseAPI.git
synced 2026-08-10 18:57:47 +00:00
Add verbose logging of API endpoint URLs
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
RootModule = 'lib\PSOPNSenseAPI.dll'
|
RootModule = 'lib\PSOPNSenseAPI.dll'
|
||||||
|
|
||||||
# Version number of this module.
|
# Version number of this module.
|
||||||
ModuleVersion = '2025.04.16.2230'
|
ModuleVersion = '2025.04.18.1015'
|
||||||
|
|
||||||
# Supported PSEditions
|
# Supported PSEditions
|
||||||
CompatiblePSEditions = @('Desktop', 'Core')
|
CompatiblePSEditions = @('Desktop', 'Core')
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ namespace PSOPNSenseAPI.Services
|
|||||||
_logger.Information("Getting DHCP leases");
|
_logger.Information("Getting DHCP leases");
|
||||||
|
|
||||||
var endpoint = _apiEndpoints.GetEndpoint("dhcp.leases.list");
|
var endpoint = _apiEndpoints.GetEndpoint("dhcp.leases.list");
|
||||||
|
var fullUrl = _apiEndpoints.GetFullUrl("dhcp.leases.list");
|
||||||
|
_logger.Verbose($"API URL: {fullUrl}");
|
||||||
return _apiClient.Get<DHCPLeaseListResponse>(endpoint);
|
return _apiClient.Get<DHCPLeaseListResponse>(endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,6 +50,8 @@ namespace PSOPNSenseAPI.Services
|
|||||||
_logger.Information($"Getting DHCP lease for MAC address {macAddress}");
|
_logger.Information($"Getting DHCP lease for MAC address {macAddress}");
|
||||||
|
|
||||||
var endpoint = _apiEndpoints.GetEndpoint("dhcp.leases.getByMac", macAddress);
|
var endpoint = _apiEndpoints.GetEndpoint("dhcp.leases.getByMac", macAddress);
|
||||||
|
var fullUrl = _apiEndpoints.GetFullUrl("dhcp.leases.getByMac", macAddress);
|
||||||
|
_logger.Verbose($"API URL: {fullUrl}");
|
||||||
return _apiClient.Get<DHCPLeaseResponse>(endpoint);
|
return _apiClient.Get<DHCPLeaseResponse>(endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,6 +65,8 @@ namespace PSOPNSenseAPI.Services
|
|||||||
_logger.Information($"Deleting DHCP lease for MAC address {macAddress}");
|
_logger.Information($"Deleting DHCP lease for MAC address {macAddress}");
|
||||||
|
|
||||||
var endpoint = _apiEndpoints.GetEndpoint("dhcp.leases.delete", macAddress);
|
var endpoint = _apiEndpoints.GetEndpoint("dhcp.leases.delete", macAddress);
|
||||||
|
var fullUrl = _apiEndpoints.GetFullUrl("dhcp.leases.delete", macAddress);
|
||||||
|
_logger.Verbose($"API URL: {fullUrl}");
|
||||||
return _apiClient.Post<DHCPLeaseDeleteResponse>(endpoint);
|
return _apiClient.Post<DHCPLeaseDeleteResponse>(endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +91,9 @@ namespace PSOPNSenseAPI.Services
|
|||||||
{
|
{
|
||||||
_logger.Information("Getting DHCP servers");
|
_logger.Information("Getting DHCP servers");
|
||||||
|
|
||||||
var endpoint = "dhcp/service/get";
|
var endpoint = "dhcpd/service/get";
|
||||||
|
var fullUrl = _apiClient.GetFullUrl(endpoint);
|
||||||
|
_logger.Verbose($"API URL: {fullUrl}");
|
||||||
return _apiClient.Get<DHCPServerListResponse>(endpoint);
|
return _apiClient.Get<DHCPServerListResponse>(endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +106,9 @@ namespace PSOPNSenseAPI.Services
|
|||||||
{
|
{
|
||||||
_logger.Information($"Getting DHCP server for interface {@interface}");
|
_logger.Information($"Getting DHCP server for interface {@interface}");
|
||||||
|
|
||||||
var endpoint = $"dhcp/service/getServer/{@interface}";
|
var endpoint = $"dhcpd/service/getServer/{@interface}";
|
||||||
|
var fullUrl = _apiClient.GetFullUrl(endpoint);
|
||||||
|
_logger.Verbose($"API URL: {fullUrl}");
|
||||||
return _apiClient.Get<DHCPServerResponse>(endpoint);
|
return _apiClient.Get<DHCPServerResponse>(endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +122,9 @@ namespace PSOPNSenseAPI.Services
|
|||||||
{
|
{
|
||||||
_logger.Information($"Updating DHCP server for interface {@interface}");
|
_logger.Information($"Updating DHCP server for interface {@interface}");
|
||||||
|
|
||||||
var endpoint = $"dhcp/service/setServer/{@interface}";
|
var endpoint = $"dhcpd/service/setServer/{@interface}";
|
||||||
|
var fullUrl = _apiClient.GetFullUrl(endpoint);
|
||||||
|
_logger.Verbose($"API URL: {fullUrl}");
|
||||||
var data = new { server = server };
|
var data = new { server = server };
|
||||||
return _apiClient.Post<DHCPServerUpdateResponse>(endpoint, data);
|
return _apiClient.Post<DHCPServerUpdateResponse>(endpoint, data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ using System;
|
|||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using PSOPNSenseAPI.Logging;
|
using PSOPNSenseAPI.Logging;
|
||||||
using PSOPNSenseAPI.Models;
|
using PSOPNSenseAPI.Models;
|
||||||
@@ -43,6 +42,16 @@ namespace PSOPNSenseAPI.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsConnected { get; private set; }
|
public bool IsConnected { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the full URL for the given endpoint
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="endpoint">The endpoint</param>
|
||||||
|
/// <returns>The full URL</returns>
|
||||||
|
public string GetFullUrl(string endpoint)
|
||||||
|
{
|
||||||
|
return $"{BaseUrl}/api/{endpoint.TrimStart('/')}";
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="OPNSenseApiClient"/> class
|
/// Initializes a new instance of the <see cref="OPNSenseApiClient"/> class
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -92,15 +101,15 @@ namespace PSOPNSenseAPI.Services
|
|||||||
/// <typeparam name="T">The type to deserialize the response to</typeparam>
|
/// <typeparam name="T">The type to deserialize the response to</typeparam>
|
||||||
/// <param name="endpoint">The API endpoint</param>
|
/// <param name="endpoint">The API endpoint</param>
|
||||||
/// <returns>The deserialized response</returns>
|
/// <returns>The deserialized response</returns>
|
||||||
public async Task<T> GetAsync<T>(string endpoint)
|
public T Get<T>(string endpoint)
|
||||||
{
|
{
|
||||||
var url = $"{BaseUrl}/api/{endpoint.TrimStart('/')}";
|
var url = $"{BaseUrl}/api/{endpoint.TrimStart('/')}";
|
||||||
_logger.Debug($"GET {url}");
|
_logger.Debug($"GET {url}");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _httpClient.GetAsync(url);
|
var response = _httpClient.GetAsync(url).GetAwaiter().GetResult();
|
||||||
return await ProcessResponseAsync<T>(response);
|
return ProcessResponse<T>(response);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -116,7 +125,7 @@ namespace PSOPNSenseAPI.Services
|
|||||||
/// <param name="endpoint">The API endpoint</param>
|
/// <param name="endpoint">The API endpoint</param>
|
||||||
/// <param name="data">The data to send</param>
|
/// <param name="data">The data to send</param>
|
||||||
/// <returns>The deserialized response</returns>
|
/// <returns>The deserialized response</returns>
|
||||||
public async Task<T> PostAsync<T>(string endpoint, object data = null)
|
public T Post<T>(string endpoint, object data = null)
|
||||||
{
|
{
|
||||||
var url = $"{BaseUrl}/api/{endpoint.TrimStart('/')}";
|
var url = $"{BaseUrl}/api/{endpoint.TrimStart('/')}";
|
||||||
_logger.Debug($"POST {url}");
|
_logger.Debug($"POST {url}");
|
||||||
@@ -131,8 +140,8 @@ namespace PSOPNSenseAPI.Services
|
|||||||
content = new StringContent(json, Encoding.UTF8, "application/json");
|
content = new StringContent(json, Encoding.UTF8, "application/json");
|
||||||
}
|
}
|
||||||
|
|
||||||
var response = await _httpClient.PostAsync(url, content);
|
var response = _httpClient.PostAsync(url, content).GetAwaiter().GetResult();
|
||||||
return await ProcessResponseAsync<T>(response);
|
return ProcessResponse<T>(response);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -147,9 +156,9 @@ namespace PSOPNSenseAPI.Services
|
|||||||
/// <typeparam name="T">The type to deserialize the response to</typeparam>
|
/// <typeparam name="T">The type to deserialize the response to</typeparam>
|
||||||
/// <param name="response">The HTTP response</param>
|
/// <param name="response">The HTTP response</param>
|
||||||
/// <returns>The deserialized response</returns>
|
/// <returns>The deserialized response</returns>
|
||||||
private async Task<T> ProcessResponseAsync<T>(HttpResponseMessage response)
|
private T ProcessResponse<T>(HttpResponseMessage response)
|
||||||
{
|
{
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
||||||
|
|
||||||
_logger.Debug($"Response status: {(int)response.StatusCode} {response.StatusCode}");
|
_logger.Debug($"Response status: {(int)response.StatusCode} {response.StatusCode}");
|
||||||
_logger.Debug($"Response body: {content}");
|
_logger.Debug($"Response body: {content}");
|
||||||
@@ -201,3 +210,4 @@ namespace PSOPNSenseAPI.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,6 +198,18 @@ namespace PSOPNSenseAPI.Services
|
|||||||
return parameters.Length > 0 ? string.Format(endpoint, parameters) : endpoint;
|
return parameters.Length > 0 ? string.Format(endpoint, parameters) : endpoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the full URL for the given endpoint key
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="endpointKey">The endpoint key</param>
|
||||||
|
/// <param name="parameters">Optional parameters to format into the endpoint</param>
|
||||||
|
/// <returns>The full URL</returns>
|
||||||
|
public string GetFullUrl(string endpointKey, params object[] parameters)
|
||||||
|
{
|
||||||
|
var endpoint = GetEndpoint(endpointKey, parameters);
|
||||||
|
return $"{_apiClient.BaseUrl}/api/{endpoint}";
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the OPNSense version
|
/// Gets the OPNSense version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user