master
Harald Wolff 2022-02-07 09:30:48 +01:00
parent f75846a0a7
commit 68f957d6bc
4 changed files with 60 additions and 5 deletions

View File

@ -36,8 +36,8 @@ namespace ln.protocols.helper
}
else if (colon > 0)
{
headerName = headerLine.Substring(0, colon);
Add(headerName, headerLine.Substring(colon + 1));
headerName = headerLine.Substring(0, colon).Trim();
Add(headerName, headerLine.Substring(colon + 1).Trim());
}
}
}
@ -48,7 +48,7 @@ namespace ln.protocols.helper
set => Set(headerName, value);
}
bool TryGetHeader(string headerName, out Header header) =>
public bool TryGetHeader(string headerName, out Header header) =>
_headers.TryGetValue(headerName.ToLower(), out header);
public bool TryGetValue(string headerName, out string headerValue)
@ -179,9 +179,11 @@ namespace ln.protocols.helper
}
public string UpperName { get; private set; }
public string Value { get; set; }
private Dictionary<string, string> parameters;
public Header(string headerName)
{
Name = headerName;
@ -193,5 +195,53 @@ namespace ln.protocols.helper
Name = headerName;
Value = headerValue;
}
public bool TryGetParameter(string parameterName, out string parameterValue)
{
if (parameters is null)
ParseParameters();
return parameters.TryGetValue(parameterName, out parameterValue);
}
public bool ContainsParameter(string parameterName)
{
if (parameters is null)
ParseParameters();
return parameters.ContainsKey(parameterName);
}
public Header ParseParameters()
{
parameters = new Dictionary<string, string>();
int idxSemicolon = Value.IndexOf(';');
if (idxSemicolon != -1)
{
string[] ptoks = Value.Split(';');
foreach (string ptok in ptoks)
{
int idxEqual = ptok.IndexOf('=');
string pn, pv;
if (idxEqual != -1)
{
pn = ptok.Substring(0, idxEqual).Trim();
pv = ptok.Substring(idxEqual + 1);
}
else
{
pn = ptok.Trim();
pv = "";
}
parameters.Add(pn, pv);
}
}
return this;
}
}
}

View File

@ -24,7 +24,7 @@ namespace ln.protocols.helper
request.Headers.Clear();
request.Headers.Read(stream);
if (request.Headers.TryGetInteger("content-stream", out int contentLength) && (contentLength > 0))
if (request.Headers.TryGetInteger("content-length", out int contentLength) && (contentLength > 0))
{
request.ContentStream = new RequestContentStream(stream, contentLength);
}

View File

@ -32,5 +32,8 @@ namespace ln.protocols.helper
return encoding.GetString(line, 0, n);
return null;
}
public static TextReader TextReader(this Stream stream) => new StreamReader(stream);
}
}

View File

@ -3,6 +3,8 @@
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<LangVersion>9</LangVersion>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageVersion>1.0.1</PackageVersion>
</PropertyGroup>
</Project>