Utils.UriQueryHelper 1.0.0

dotnet add package Utils.UriQueryHelper --version 1.0.0                
NuGet\Install-Package Utils.UriQueryHelper -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Utils.UriQueryHelper" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Utils.UriQueryHelper --version 1.0.0                
#r "nuget: Utils.UriQueryHelper, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Utils.UriQueryHelper as a Cake Addin
#addin nuget:?package=Utils.UriQueryHelper&version=1.0.0

// Install Utils.UriQueryHelper as a Cake Tool
#tool nuget:?package=Utils.UriQueryHelper&version=1.0.0                

UriQuery

UriQuery is an unitility class that can be used to parse and modify URI query strings.

Usage

[Test]
public void AddParameter()
{
    var actual = UriQuery.Parse("?param1=value1").With("param2", "value2").GetQuery();
    Assert.That(actual, Is.EqualTo("?param1=value1&param2=value2"));
}

[Test]
public void OverrideExistingParameter()
{
    var actual = UriQuery.Parse("?param1=value1").With("param1", "value2").GetQuery();
    Assert.That(actual, Is.EqualTo("?param1=value2"));
}

[Test]
public void AppendValueToParameter()
{
    var actual = UriQuery.Parse("?param1=value1").Append("param1", "value2").GetQuery();
    Assert.That(actual, Is.EqualTo("?param1[]=value1&param1[]=value2"));
}

[Test]
public void RemoveParameter()
{
    var actual = UriQuery.Parse("?param1=value1&param2=value2").Without("param1").GetQuery();
    Assert.That(actual, Is.EqualTo("?param2=value2"));
}

[Test]
public void RemoveValueFromMultiValuedParameter()
{
    var actual = UriQuery.Parse("?param[]=value1&param[]=value2&param[]=value3")
                         .Without("param", "value2")
                         .GetQuery();

    Assert.That(actual, Is.EqualTo("?param[]=value1&param[]=value3"));
}

See UriQueryTests.cs file for other usage samples.

QueryBuilder

QueryBuilder is a helper class that can be used to modify Query property value of a UriBuilder class instance.

Usage

private const string BaseUri = "https://host.com:443/path";

[Test]
public void AddParameter()
{
    var target = new UriBuilder($"{BaseUri}?param1=value1");
    target.ModifyQuery().Set("param2", "value2").Done();

    Assert.That(target.Query, Is.EqualTo("?param1=value1&param2=value2"));
}

[Test]
public void OverrideExistingParameter()
{
    var target = new UriBuilder($"{BaseUri}?param1=value1");
    target.ModifyQuery().Set("param1", "value2").Done();

    Assert.That(target.Query, Is.EqualTo("?param1=value2"));
}

[Test]
public void AppendValueToParameter()
{
        var target = new UriBuilder($"{BaseUri}?param1=value1");
        target.ModifyQuery().Add("param1", "value2").Done();

        Assert.That(target.Query, Is.EqualTo("?param1[]=value1&param1[]=value2"));
}

[Test]
public void RemoveParameter()
{
        var target = new UriBuilder($"{BaseUri}?param1=value1&param2=value2");
        target.ModifyQuery().Remove("param1").Done();

        Assert.That(target.Query, Is.EqualTo("?param2=value2"));
}

[Test]
public void RemoveValueFromMultiValuedParameter()
{
        var target = new UriBuilder($"{BaseUri}?param[]=value1&param[]=value2&param[]=value3");
        target.ModifyQuery().Remove("param", "value2").Done();

        Assert.That(target.Query, Is.EqualTo("?param[]=value1&param[]=value3"));
}

See QueryBuilderTests.cs file for other usage samples.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 159 1/14/2024
1.0.0-rc2 88 1/14/2024
1.0.0-alpha2 95 1/14/2024
1.0.0-alpha1 124 11/28/2023