Fixed bugs and added a few helper functions.

This commit is contained in:
MattMo 2022-03-16 00:24:39 -07:00
parent 836aea0da7
commit 6c64bbe4be

@ -37,6 +37,7 @@ namespace MontoyaTech.Rest.Net
/// <summary>
/// Creates a new route with a given method, syntax, target and optional close response flag.
/// </summary>
/// <param name="name"></param>
/// <param name="method"></param>
/// <param name="syntax"></param>
/// <param name="target"></param>
@ -52,6 +53,7 @@ namespace MontoyaTech.Rest.Net
/// <summary>
/// Creates a new route with a given method, syntax, target and optional close response flag.
/// </summary>
/// <param name="name"></param>
/// <param name="method"></param>
/// <param name="syntax"></param>
/// <param name="target"></param>
@ -59,6 +61,50 @@ namespace MontoyaTech.Rest.Net
public Route(HttpRequestMethod method, string syntax, Func<RouteContext, HttpListenerResponse> target, bool closeResponse = true)
: this(method.ToString(), syntax, target, closeResponse) { }
/// <summary>
/// Returns a list of the argument names for this route.
/// </summary>
/// <returns></returns>
public List<string> GetArguments()
{
var segments = this.Syntax.Split('/').Where(segment => segment.Length > 0).Select(segment => segment.Trim()).ToList();
var results = new List<string>();
foreach (var segment in segments)
if (segment.StartsWith("{"))
results.Add(segment.Substring(1, segment.Length - 2));
return results;
}
/// <summary>
/// Returns the url for this route including arguments.
/// </summary>
/// <returns></returns>
public string GetUrl()
{
var segments = this.Syntax.Split('/').Where(segment => segment.Length > 0).Select(segment => segment.Trim()).ToList();
var builder = new StringBuilder();
foreach (var segment in segments)
{
builder.Append('/');
if (segment.StartsWith("{"))
builder.Append(segment);
else if (segment == "*")
builder.Append("*");
else if (segment == "**")
break;
else
builder.Append(segment);
}
return builder.ToString();
}
/// <summary>
/// Invokes this route with a context and a given set of string arguments.
/// </summary>
@ -192,7 +238,7 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert<T2>(arguments[1]),
RouteArgumentConverter.Convert<T3>(arguments[2]),
RouteArgumentConverter.Convert<T4>(arguments[3]),
RouteArgumentConverter.Convert<T4>(arguments[4])
RouteArgumentConverter.Convert<T5>(arguments[4])
);
}
}
@ -220,8 +266,8 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert<T2>(arguments[1]),
RouteArgumentConverter.Convert<T3>(arguments[2]),
RouteArgumentConverter.Convert<T4>(arguments[3]),
RouteArgumentConverter.Convert<T4>(arguments[4]),
RouteArgumentConverter.Convert<T4>(arguments[5])
RouteArgumentConverter.Convert<T5>(arguments[4]),
RouteArgumentConverter.Convert<T6>(arguments[5])
);
}
}
@ -249,9 +295,9 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert<T2>(arguments[1]),
RouteArgumentConverter.Convert<T3>(arguments[2]),
RouteArgumentConverter.Convert<T4>(arguments[3]),
RouteArgumentConverter.Convert<T4>(arguments[4]),
RouteArgumentConverter.Convert<T4>(arguments[5]),
RouteArgumentConverter.Convert<T4>(arguments[6])
RouteArgumentConverter.Convert<T5>(arguments[4]),
RouteArgumentConverter.Convert<T6>(arguments[5]),
RouteArgumentConverter.Convert<T7>(arguments[6])
);
}
}
@ -279,10 +325,10 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert<T2>(arguments[1]),
RouteArgumentConverter.Convert<T3>(arguments[2]),
RouteArgumentConverter.Convert<T4>(arguments[3]),
RouteArgumentConverter.Convert<T4>(arguments[4]),
RouteArgumentConverter.Convert<T4>(arguments[5]),
RouteArgumentConverter.Convert<T4>(arguments[6]),
RouteArgumentConverter.Convert<T4>(arguments[7])
RouteArgumentConverter.Convert<T5>(arguments[4]),
RouteArgumentConverter.Convert<T6>(arguments[5]),
RouteArgumentConverter.Convert<T7>(arguments[6]),
RouteArgumentConverter.Convert<T8>(arguments[7])
);
}
}