Fixed bugs and added a few helper functions.
This commit is contained in:
		| @@ -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]) | ||||||
|             ); |             ); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user