in Darabonba/Core.cs [28:69]
internal static string ComposeUrl(Request request)
{
var urlBuilder = new StringBuilder("");
urlBuilder.Append(ConverterUtils.StrToLower(request.Protocol)).Append("://");
urlBuilder.Append(DictUtils.GetDicValue(request.Headers, "host"));
if (request.Port > 0)
{
urlBuilder.Append(":");
urlBuilder.Append(request.Port);
}
urlBuilder.Append(request.Pathname);
if (request.Query != null && request.Query.Count > 0)
{
if (urlBuilder.ToString().Contains("?"))
{
if (!urlBuilder.ToString().EndsWith("&"))
{
urlBuilder.Append("&");
}
}
else
{
urlBuilder.Append("?");
}
foreach (var entry in request.Query)
{
var key = entry.Key;
var val = entry.Value;
if (val == null)
{
continue;
}
urlBuilder.Append(PercentEncode(key));
urlBuilder.Append("=");
urlBuilder.Append(PercentEncode(val));
urlBuilder.Append("&");
}
}
return urlBuilder.ToString().TrimEnd('?').TrimEnd('&');
}