Fixed bugs and added a few helper functions.
This commit is contained in:
parent
836aea0da7
commit
6c64bbe4be
@ -37,6 +37,7 @@ namespace MontoyaTech.Rest.Net
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new route with a given method, syntax, target and optional close response flag.
|
/// Creates a new route with a given method, syntax, target and optional close response flag.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="name"></param>
|
||||||
/// <param name="method"></param>
|
/// <param name="method"></param>
|
||||||
/// <param name="syntax"></param>
|
/// <param name="syntax"></param>
|
||||||
/// <param name="target"></param>
|
/// <param name="target"></param>
|
||||||
@ -52,6 +53,7 @@ namespace MontoyaTech.Rest.Net
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new route with a given method, syntax, target and optional close response flag.
|
/// Creates a new route with a given method, syntax, target and optional close response flag.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="name"></param>
|
||||||
/// <param name="method"></param>
|
/// <param name="method"></param>
|
||||||
/// <param name="syntax"></param>
|
/// <param name="syntax"></param>
|
||||||
/// <param name="target"></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)
|
public Route(HttpRequestMethod method, string syntax, Func<RouteContext, HttpListenerResponse> target, bool closeResponse = true)
|
||||||
: this(method.ToString(), syntax, target, closeResponse) { }
|
: 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>
|
/// <summary>
|
||||||
/// Invokes this route with a context and a given set of string arguments.
|
/// Invokes this route with a context and a given set of string arguments.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -192,7 +238,7 @@ namespace MontoyaTech.Rest.Net
|
|||||||
RouteArgumentConverter.Convert<T2>(arguments[1]),
|
RouteArgumentConverter.Convert<T2>(arguments[1]),
|
||||||
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
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<T2>(arguments[1]),
|
||||||
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[4]),
|
RouteArgumentConverter.Convert<T5>(arguments[4]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[5])
|
RouteArgumentConverter.Convert<T6>(arguments[5])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -249,9 +295,9 @@ namespace MontoyaTech.Rest.Net
|
|||||||
RouteArgumentConverter.Convert<T2>(arguments[1]),
|
RouteArgumentConverter.Convert<T2>(arguments[1]),
|
||||||
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[4]),
|
RouteArgumentConverter.Convert<T5>(arguments[4]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[5]),
|
RouteArgumentConverter.Convert<T6>(arguments[5]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[6])
|
RouteArgumentConverter.Convert<T7>(arguments[6])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -279,10 +325,10 @@ namespace MontoyaTech.Rest.Net
|
|||||||
RouteArgumentConverter.Convert<T2>(arguments[1]),
|
RouteArgumentConverter.Convert<T2>(arguments[1]),
|
||||||
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
RouteArgumentConverter.Convert<T3>(arguments[2]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
RouteArgumentConverter.Convert<T4>(arguments[3]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[4]),
|
RouteArgumentConverter.Convert<T5>(arguments[4]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[5]),
|
RouteArgumentConverter.Convert<T6>(arguments[5]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[6]),
|
RouteArgumentConverter.Convert<T7>(arguments[6]),
|
||||||
RouteArgumentConverter.Convert<T4>(arguments[7])
|
RouteArgumentConverter.Convert<T8>(arguments[7])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user