lampac/Shared/Models/HeadersModel.cs
lampac-talks f843f04fd4 chore: initial commit 154.3
Signed-off-by: lampac-talks <lampac-talks@users.noreply.github.com>
2026-01-30 16:23:09 +03:00

126 lines
3.4 KiB
C#

namespace Shared.Models
{
public class HeadersModel
{
public HeadersModel(string name, string val)
{
this.name = name;
this.val = val;
}
public string name { get; set; }
public string val { get; set; }
#region Init
public static List<HeadersModel> Init(string name, string val)
{
if (string.IsNullOrWhiteSpace(val))
return new List<HeadersModel>();
return new List<HeadersModel>() { new HeadersModel(name, val)};
}
public static List<HeadersModel> Init(List<HeadersModel> headers)
{
return headers ?? new List<HeadersModel>();
}
public static List<HeadersModel> Init(params (string name, string val)[] headers)
{
var h = new List<HeadersModel>(headers.Count());
foreach (var i in headers)
{
if (!string.IsNullOrWhiteSpace(i.val))
h.Add(new HeadersModel(i.name, i.val));
}
return h;
}
public static List<HeadersModel> Init(Dictionary<string, string> defaultHeaders, params (string name, string val)[] headers)
{
return Join(Init(headers), defaultHeaders);
}
public static List<HeadersModel> Init(IEnumerable<KeyValuePair<string, string>> headers)
{
if (headers == null || !headers.Any())
return new List<HeadersModel>();
var h = new List<HeadersModel>(headers.Count());
foreach (var i in headers)
{
if (!string.IsNullOrWhiteSpace(i.Value))
h.Add(new HeadersModel(i.Key, i.Value));
}
return h;
}
#endregion
#region Join
public static List<HeadersModel> Join(List<HeadersModel> h1, List<HeadersModel> h2)
{
if (h1 == null)
return h2 ?? new List<HeadersModel>();
if (h2 == null)
return h1 ?? new List<HeadersModel>();
var result = new List<HeadersModel>(h1);
result.AddRange(h2);
return result;
}
public static List<HeadersModel> Join(List<HeadersModel> h1, Dictionary<string, string> h2)
{
if (h1 == null)
{
if (h2 == null)
return new List<HeadersModel>();
return Init(h2);
}
if (h2 == null)
return h1 ?? new List<HeadersModel>();
var result = new List<HeadersModel>(h1);
foreach (var _h2 in h2)
{
if (!string.IsNullOrWhiteSpace(_h2.Value))
result.Add(new HeadersModel(_h2.Key, _h2.Value));
}
return result;
}
#endregion
#region InitOrNull
public static List<HeadersModel> InitOrNull(Dictionary<string, string> headers)
{
if (headers == null || headers.Count == 0)
return null;
var h = new List<HeadersModel>(headers.Count);
foreach (var i in headers)
{
if (!string.IsNullOrWhiteSpace(i.Value))
h.Add(new HeadersModel(i.Key, i.Value));
}
if (h.Count == 0)
return null;
return h;
}
#endregion
}
}