Add ReCClientHelpers for query and JSON request helpers
Introduced internal static class ReCClientHelpers with methods to build query strings from key/value pairs and to create JsonContent payloads for HTTP requests. Includes conditional compilation for .NET Framework compatibility and XML documentation for both methods. Added necessary using directives.
This commit is contained in:
49
src/ReC.Client/ReCClientHelpers.cs
Normal file
49
src/ReC.Client/ReCClientHelpers.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Net.Http.Json;
|
||||
|
||||
#if NETFRAMEWORK
|
||||
using System.Net.Http;
|
||||
#endif
|
||||
|
||||
namespace ReC.Client
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides shared helpers for composing requests.
|
||||
/// </summary>
|
||||
internal static class ReCClientHelpers
|
||||
{
|
||||
#if NETFRAMEWORK
|
||||
/// <summary>
|
||||
/// Builds a query string from the provided key/value pairs, skipping null values.
|
||||
/// </summary>
|
||||
/// <param name="parameters">The key/value pairs to include in the query string.</param>
|
||||
/// <returns>A query string beginning with '?', or an empty string if no values are provided.</returns>
|
||||
public static string BuildQuery(params (string Key, object Value)[] parameters)
|
||||
#else
|
||||
/// <summary>
|
||||
/// Builds a query string from the provided key/value pairs, skipping null values.
|
||||
/// </summary>
|
||||
/// <param name="parameters">The key/value pairs to include in the query string.</param>
|
||||
/// <returns>A query string beginning with '?', or an empty string if no values are provided.</returns>
|
||||
public static string BuildQuery(params (string Key, object? Value)[] parameters)
|
||||
#endif
|
||||
{
|
||||
var parts = parameters
|
||||
.Where(p => p.Value != null)
|
||||
.Select(p => $"{Uri.EscapeDataString(p.Key)}={Uri.EscapeDataString(Convert.ToString(p.Value, CultureInfo.InvariantCulture) ?? string.Empty)}");
|
||||
|
||||
var query = string.Join("&", parts);
|
||||
return string.IsNullOrWhiteSpace(query) ? string.Empty : $"?{query}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a JSON content payload from the provided object.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the payload.</typeparam>
|
||||
/// <param name="payload">The payload to serialize.</param>
|
||||
/// <returns>A <see cref="JsonContent"/> instance ready for HTTP requests.</returns>
|
||||
public static JsonContent ToJsonContent<T>(T payload) => JsonContent.Create(payload);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user