37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Hamakaze.Headers {
|
|
public class HttpHostHeader : HttpHeader {
|
|
public const string NAME = @"Host";
|
|
|
|
public override string Name => NAME;
|
|
public override object Value {
|
|
get {
|
|
StringBuilder sb = new();
|
|
sb.Append(Host);
|
|
if(Port != -1)
|
|
sb.AppendFormat(@":{0}", Port);
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
|
|
public string Host { get; }
|
|
public int Port { get; }
|
|
public bool IsSecure { get; }
|
|
|
|
public HttpHostHeader(string host, int port) {
|
|
Host = host;
|
|
Port = port;
|
|
}
|
|
|
|
public HttpHostHeader(string hostAndPort) {
|
|
string[] parts = hostAndPort.Split(':', 2, StringSplitOptions.TrimEntries);
|
|
Host = parts.ElementAtOrDefault(0) ?? throw new ArgumentNullException(nameof(hostAndPort));
|
|
if(!ushort.TryParse(parts.ElementAtOrDefault(1), out ushort port))
|
|
throw new FormatException(@"Host is not in valid format.");
|
|
Port = port;
|
|
}
|
|
}
|
|
}
|