Added ToEscapeString() and ToEscapeDataString() (#11)
* Added ToEscapeString() and ToEscapeDataString(), added desciption in readme, and added unit tests * added changes from PR feedback
This commit is contained in:
committed by
Tommy Parnell
parent
be92d91ef6
commit
9b1d037a88
53
Readme.md
53
Readme.md
@@ -1,10 +1,15 @@
|
|||||||
## UriBuilder.Fluent
|
# UriBuilder.Fluent
|
||||||
[](https://coveralls.io/github/TerribleDev/UriBuilder.Fluent) [](https://ci.appveyor.com/project/tparnell8/uribuilder-fluent/branch/master)
|
[](https://coveralls.io/github/TerribleDev/UriBuilder.Fluent) [](https://ci.appveyor.com/project/tparnell8/uribuilder-fluent/branch/master)
|
||||||
|
|
||||||
This places extension methods over System.UriBuilder to help deal with query string parameters, and create more of a fluent interface. Unlike other projects, this NetStandardLibrary compliant package builds ontop of trusty UriBuilder, does not use custom Uri generators, or have outside dependencies. Unit tests continue to be a first class citizen!
|
This places extension methods over System.UriBuilder to help deal with query string parameters, and create more of a fluent interface. Unlike other projects, this NetStandardLibrary compliant package builds ontop of trusty UriBuilder, does not use custom Uri generators, or have outside dependencies. Unit tests continue to be a first class citizen!
|
||||||
|
|
||||||
This lets you do things like
|
## Getting started
|
||||||
|
|
||||||
|
Just install the nuget package `install-package UriBuilder.Fluent` and thats it. The extension methods should be available to you!
|
||||||
|
|
||||||
|
## Code Example
|
||||||
|
|
||||||
|
This lets you do things like
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
|
|
||||||
@@ -16,8 +21,6 @@ new UriBuilder()
|
|||||||
.UseHttps()
|
.UseHttps()
|
||||||
.ToString()
|
.ToString()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
result: `https://awesome.com/seg?awesome=yodawg&fun=cool,yay`
|
result: `https://awesome.com/seg?awesome=yodawg&fun=cool,yay`
|
||||||
|
|
||||||
@@ -35,16 +38,44 @@ result: `https://awesome.com/yo?id=5`
|
|||||||
you can even pass a dictionary of parameters
|
you can even pass a dictionary of parameters
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
var dictionary = new Dictionary<string, string>()
|
|
||||||
{
|
var dictionary = new Dictionary<string, string>()
|
||||||
|
{
|
||||||
["yo"] = "dawg"
|
["yo"] = "dawg"
|
||||||
};
|
};
|
||||||
new UriBuilder("http://awesome.com")
|
|
||||||
|
new UriBuilder("http://awesome.com")
|
||||||
.WithParameter(dictionary);
|
.WithParameter(dictionary);
|
||||||
http://awesome.com/?yo=dawg
|
|
||||||
|
```
|
||||||
|
result: `http://awesome.com/?yo=dawg`
|
||||||
|
|
||||||
|
### ToEscapeString() vs. ToEscapeDataString()
|
||||||
|
|
||||||
|
There are two extension methods for performing Uri encoding.
|
||||||
|
|
||||||
|
#### ToEscapeString()
|
||||||
|
Performs encoding only on the Uri query string and returns the Uri as a string.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
|
||||||
|
var uri = new UriBuilder("https://awesome.com")
|
||||||
|
.WithParameter("yo", "dawg<")
|
||||||
|
.ToEscapeString();
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Getting started
|
result: `http://awesome.com/?yo=dawg%3C`
|
||||||
|
|
||||||
Just install the nuget package `install-package UriBuilder.Fluent` and thats it. The extension methods should be available to you!
|
#### ToEscapeDataString()
|
||||||
|
Performs encoding on the whole Uri and returns the Uri as a string.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
|
||||||
|
var uri = new UriBuilder("https://awesome.com")
|
||||||
|
.WithParameter("yo", "dawg<")
|
||||||
|
.ToEscapeDataString();
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
result: `http%3A%2F%2Fawesome.com%2F%3Fyo%3Ddawg%3C`
|
||||||
@@ -141,5 +141,21 @@ namespace FluentUriBuilder.Tests
|
|||||||
.WithParameter(dictionary);
|
.WithParameter(dictionary);
|
||||||
Assert.Equal("http://awesome.com/?yo=dawg&troll=toll&hammer", url.Uri.ToString());
|
Assert.Equal("http://awesome.com/?yo=dawg&troll=toll&hammer", url.Uri.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestToEscapedString()
|
||||||
|
{
|
||||||
|
var url = new UriBuilder("http://awesome.com")
|
||||||
|
.WithParameter("yo","dawg<");
|
||||||
|
Assert.Equal("http://awesome.com/?yo=dawg%3C", url.ToEscapeString());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestToEscapedDataString()
|
||||||
|
{
|
||||||
|
var url = new UriBuilder("http://awesome.com")
|
||||||
|
.WithParameter("yo","dawg<");
|
||||||
|
Assert.Equal("http%3A%2F%2Fawesome.com%2F%3Fyo%3Ddawg%3C", url.ToEscapeDataString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,10 +127,7 @@ namespace System
|
|||||||
return bld;
|
return bld;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string PathAndQuery(this UriBuilder bld)
|
public static string PathAndQuery(this UriBuilder bld) => (bld.Path + bld.Query);
|
||||||
{
|
|
||||||
return bld.Path + bld.Query;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Use Https?
|
/// Use Https?
|
||||||
@@ -143,5 +140,20 @@ namespace System
|
|||||||
bld.Scheme = predicate ? "https" : "http";
|
bld.Scheme = predicate ? "https" : "http";
|
||||||
return bld;
|
return bld;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Escape Url query string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bld"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string ToEscapeString(this UriBuilder bld) => Uri.EscapeUriString(bld.Uri.ToString());
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Escape the whole Url string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bld"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string ToEscapeDataString(this UriBuilder bld) => Uri.EscapeDataString(bld.Uri.ToString());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user