using NCC.ClayObject.Extensions;
using NCC.Dependency;
using System.Collections.Generic;
using System.Linq;
namespace System.Net.Http
{
///
/// HttpRequestMessage 拓展
///
[SuppressSniffer]
public static class HttpRequestMessageExtensions
{
///
/// 追加查询参数
///
///
///
///
public static void AppendQueries(this HttpRequestMessage httpRequest, IDictionary queries, bool isEncode = true)
{
if (queries == null || queries.Count == 0) return;
// 获取原始地址
var finalRequestUrl = httpRequest.RequestUri.OriginalString;
// 拼接
var urlParameters = queries.Where(u => u.Value != null)
.Select(u => $"{u.Key}={(isEncode ? Uri.EscapeDataString(u.Value?.ToString() ?? string.Empty) : (u.Value?.ToString() ?? string.Empty))}");
finalRequestUrl += $"{(finalRequestUrl.IndexOf("?") > -1 ? "&" : "?")}{string.Join("&", urlParameters)}";
// 重新设置地址
httpRequest.RequestUri = new Uri(finalRequestUrl, UriKind.RelativeOrAbsolute);
}
///
/// 追加查询参数
///
///
///
///
public static void AppendQueries(this HttpRequestMessage httpRequest, object queries, bool isEncode = true)
{
if (queries == null) return;
httpRequest.AppendQueries(queries.ToDictionary(), isEncode);
}
}
}