UriQueryParamsCollection
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
using System.Text;
namespace Azure.Storage
{
internal sealed class UriQueryParamsCollection : Dictionary<string, string>
{
public UriQueryParamsCollection()
: base((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase)
{
}
public UriQueryParamsCollection(string encodedQueryParamString)
: base((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase)
{
string text = encodedQueryParamString;
if (text == null)
throw Errors.ArgumentNull("encodedQueryParamString");
encodedQueryParamString = text;
if (encodedQueryParamString.StartsWith("?", true, CultureInfo.InvariantCulture))
encodedQueryParamString = encodedQueryParamString.Substring(1);
string[] array = encodedQueryParamString.Split(new char[1] {
'&'
}, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < array.Length; i++) {
string[] array2 = array[i].Split(new char[1] {
'='
}, 2);
if (array2.Length == 1)
Add(WebUtility.UrlDecode(array2[0]), null);
else
Add(WebUtility.UrlDecode(array2[0]), WebUtility.UrlDecode(array2[1]));
}
}
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder();
using (Enumerator enumerator = GetEnumerator()) {
while (enumerator.MoveNext()) {
KeyValuePair<string, string> current = enumerator.Current;
if (stringBuilder.Length > 0)
stringBuilder.Append('&');
stringBuilder.Append(WebUtility.UrlEncode(current.Key)).Append('=').Append(WebUtility.UrlEncode(current.Value));
}
}
return stringBuilder.ToString();
}
}
}