diff --git a/Rest.Net/Rest.Net/Route.cs b/Rest.Net/Rest.Net/Route.cs
index e41b9eb..83cdeac 100644
--- a/Rest.Net/Rest.Net/Route.cs
+++ b/Rest.Net/Rest.Net/Route.cs
@@ -37,6 +37,7 @@ namespace MontoyaTech.Rest.Net
///
/// Creates a new route with a given method, syntax, target and optional close response flag.
///
+ ///
///
///
///
@@ -52,6 +53,7 @@ namespace MontoyaTech.Rest.Net
///
/// Creates a new route with a given method, syntax, target and optional close response flag.
///
+ ///
///
///
///
@@ -59,6 +61,50 @@ namespace MontoyaTech.Rest.Net
public Route(HttpRequestMethod method, string syntax, Func target, bool closeResponse = true)
: this(method.ToString(), syntax, target, closeResponse) { }
+ ///
+ /// Returns a list of the argument names for this route.
+ ///
+ ///
+ public List GetArguments()
+ {
+ var segments = this.Syntax.Split('/').Where(segment => segment.Length > 0).Select(segment => segment.Trim()).ToList();
+
+ var results = new List();
+
+ foreach (var segment in segments)
+ if (segment.StartsWith("{"))
+ results.Add(segment.Substring(1, segment.Length - 2));
+
+ return results;
+ }
+
+ ///
+ /// Returns the url for this route including arguments.
+ ///
+ ///
+ 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();
+ }
+
///
/// Invokes this route with a context and a given set of string arguments.
///
@@ -192,7 +238,7 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert(arguments[1]),
RouteArgumentConverter.Convert(arguments[2]),
RouteArgumentConverter.Convert(arguments[3]),
- RouteArgumentConverter.Convert(arguments[4])
+ RouteArgumentConverter.Convert(arguments[4])
);
}
}
@@ -220,8 +266,8 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert(arguments[1]),
RouteArgumentConverter.Convert(arguments[2]),
RouteArgumentConverter.Convert(arguments[3]),
- RouteArgumentConverter.Convert(arguments[4]),
- RouteArgumentConverter.Convert(arguments[5])
+ RouteArgumentConverter.Convert(arguments[4]),
+ RouteArgumentConverter.Convert(arguments[5])
);
}
}
@@ -249,9 +295,9 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert(arguments[1]),
RouteArgumentConverter.Convert(arguments[2]),
RouteArgumentConverter.Convert(arguments[3]),
- RouteArgumentConverter.Convert(arguments[4]),
- RouteArgumentConverter.Convert(arguments[5]),
- RouteArgumentConverter.Convert(arguments[6])
+ RouteArgumentConverter.Convert(arguments[4]),
+ RouteArgumentConverter.Convert(arguments[5]),
+ RouteArgumentConverter.Convert(arguments[6])
);
}
}
@@ -279,10 +325,10 @@ namespace MontoyaTech.Rest.Net
RouteArgumentConverter.Convert(arguments[1]),
RouteArgumentConverter.Convert(arguments[2]),
RouteArgumentConverter.Convert(arguments[3]),
- RouteArgumentConverter.Convert(arguments[4]),
- RouteArgumentConverter.Convert(arguments[5]),
- RouteArgumentConverter.Convert(arguments[6]),
- RouteArgumentConverter.Convert(arguments[7])
+ RouteArgumentConverter.Convert(arguments[4]),
+ RouteArgumentConverter.Convert(arguments[5]),
+ RouteArgumentConverter.Convert(arguments[6]),
+ RouteArgumentConverter.Convert(arguments[7])
);
}
}