#265 Add implicit converters between string and PathString.

This commit is contained in:
Chris Ross 2015-04-20 10:54:33 -07:00
parent 7d7cd5fde7
commit 4030be585d
2 changed files with 26 additions and 8 deletions

View File

@ -236,5 +236,23 @@ namespace Microsoft.AspNet.Http
{ {
return left.Add(right); return left.Add(right);
} }
/// <summary>
/// Implicitly creates a new PathString from the given string.
/// </summary>
/// <param name="s"></param>
public static implicit operator PathString(string s)
{
return new PathString(s);
}
/// <summary>
/// Implicitly calls ToString().
/// </summary>
/// <param name="path"></param>
public static implicit operator string(PathString path)
{
return path.ToString();
}
} }
} }

View File

@ -60,7 +60,7 @@ namespace Microsoft.AspNet.Builder.Extensions
{ {
HttpContext context = CreateRequest(basePath, requestPath); HttpContext context = CreateRequest(basePath, requestPath);
var builder = new ApplicationBuilder(serviceProvider: null); var builder = new ApplicationBuilder(serviceProvider: null);
builder.Map(new PathString(matchPath), UseSuccess); builder.Map(matchPath, UseSuccess);
var app = builder.Build(); var app = builder.Build();
app.Invoke(context).Wait(); app.Invoke(context).Wait();
@ -81,7 +81,7 @@ namespace Microsoft.AspNet.Builder.Extensions
{ {
HttpContext context = CreateRequest(basePath, requestPath); HttpContext context = CreateRequest(basePath, requestPath);
var builder = new ApplicationBuilder(serviceProvider: null); var builder = new ApplicationBuilder(serviceProvider: null);
builder.Map(new PathString(matchPath), subBuilder => subBuilder.Run(Success)); builder.Map(matchPath, subBuilder => subBuilder.Run(Success));
var app = builder.Build(); var app = builder.Build();
app.Invoke(context).Wait(); app.Invoke(context).Wait();
@ -96,7 +96,7 @@ namespace Microsoft.AspNet.Builder.Extensions
[InlineData("/foo/cho/")] [InlineData("/foo/cho/")]
public void MatchPathWithTrailingSlashThrowsException(string matchPath) public void MatchPathWithTrailingSlashThrowsException(string matchPath)
{ {
Should.Throw<ArgumentException>(() => new ApplicationBuilder(serviceProvider: null).Map(new PathString(matchPath), map => { }).Build()); Should.Throw<ArgumentException>(() => new ApplicationBuilder(serviceProvider: null).Map(matchPath, map => { }).Build());
} }
[Theory] [Theory]
@ -111,7 +111,7 @@ namespace Microsoft.AspNet.Builder.Extensions
{ {
HttpContext context = CreateRequest(basePath, requestPath); HttpContext context = CreateRequest(basePath, requestPath);
var builder = new ApplicationBuilder(serviceProvider: null); var builder = new ApplicationBuilder(serviceProvider: null);
builder.Map(new PathString(matchPath), UseNotImplemented); builder.Map(matchPath, UseNotImplemented);
builder.Run(Success); builder.Run(Success);
var app = builder.Build(); var app = builder.Build();
app.Invoke(context).Wait(); app.Invoke(context).Wait();
@ -133,7 +133,7 @@ namespace Microsoft.AspNet.Builder.Extensions
{ {
HttpContext context = CreateRequest(basePath, requestPath); HttpContext context = CreateRequest(basePath, requestPath);
var builder = new ApplicationBuilder(serviceProvider: null); var builder = new ApplicationBuilder(serviceProvider: null);
builder.Map(new PathString(matchPath), UseNotImplemented); builder.Map(matchPath, UseNotImplemented);
builder.Run(Success); builder.Run(Success);
var app = builder.Build(); var app = builder.Build();
app.Invoke(context).Wait(); app.Invoke(context).Wait();
@ -147,12 +147,12 @@ namespace Microsoft.AspNet.Builder.Extensions
public void ChainedRoutes_Success() public void ChainedRoutes_Success()
{ {
var builder = new ApplicationBuilder(serviceProvider: null); var builder = new ApplicationBuilder(serviceProvider: null);
builder.Map(new PathString("/route1"), map => builder.Map("/route1", map =>
{ {
map.Map(new PathString("/subroute1"), UseSuccess); map.Map("/subroute1", UseSuccess);
map.Run(NotImplemented); map.Run(NotImplemented);
}); });
builder.Map(new PathString("/route2/subroute2"), UseSuccess); builder.Map("/route2/subroute2", UseSuccess);
var app = builder.Build(); var app = builder.Build();
HttpContext context = CreateRequest(string.Empty, "/route1"); HttpContext context = CreateRequest(string.Empty, "/route1");