aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Services/QueryParamCollection.cs
diff options
context:
space:
mode:
authorWWWesten <4700006+WWWesten@users.noreply.github.com>2021-11-01 23:43:29 +0500
committerGitHub <noreply@github.com>2021-11-01 23:43:29 +0500
commit0a14279e2a21bcb9654a06a2d49e1e4f0cc5329c (patch)
treee1b1bd603b011ca98e5793e356326bf4a35a7050 /MediaBrowser.Model/Services/QueryParamCollection.cs
parentf2817fef743eeb75a00782ceea363b2d3e7dc9f2 (diff)
parent76eeb8f655424d295e73ced8349c6fefee6ddb12 (diff)
Merge branch 'jellyfin:master' into master
Diffstat (limited to 'MediaBrowser.Model/Services/QueryParamCollection.cs')
-rw-r--r--MediaBrowser.Model/Services/QueryParamCollection.cs196
1 files changed, 0 insertions, 196 deletions
diff --git a/MediaBrowser.Model/Services/QueryParamCollection.cs b/MediaBrowser.Model/Services/QueryParamCollection.cs
deleted file mode 100644
index 4297b97c6..000000000
--- a/MediaBrowser.Model/Services/QueryParamCollection.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using MediaBrowser.Model.Dto;
-
-namespace MediaBrowser.Model.Services
-{
- public class QueryParamCollection : List<NameValuePair>
- {
- public QueryParamCollection()
- {
-
- }
-
- public QueryParamCollection(IDictionary<string, string> headers)
- {
- foreach (var pair in headers)
- {
- Add(pair.Key, pair.Value);
- }
- }
-
- private static StringComparison GetStringComparison()
- {
- return StringComparison.OrdinalIgnoreCase;
- }
-
- private static StringComparer GetStringComparer()
- {
- return StringComparer.OrdinalIgnoreCase;
- }
-
- public string GetKey(int index)
- {
- return this[index].Name;
- }
-
- public string Get(int index)
- {
- return this[index].Value;
- }
-
- public virtual string[] GetValues(int index)
- {
- return new[] { Get(index) };
- }
-
- /// <summary>
- /// Adds a new query parameter.
- /// </summary>
- public virtual void Add(string key, string value)
- {
- Add(new NameValuePair(key, value));
- }
-
- public virtual void Set(string key, string value)
- {
- if (string.IsNullOrEmpty(value))
- {
- var parameters = GetItems(key);
-
- foreach (var p in parameters)
- {
- Remove(p);
- }
-
- return;
- }
-
- foreach (var pair in this)
- {
- var stringComparison = GetStringComparison();
-
- if (string.Equals(key, pair.Name, stringComparison))
- {
- pair.Value = value;
- return;
- }
- }
-
- Add(key, value);
- }
-
- /// <summary>
- /// Removes all parameters of the given name.
- /// </summary>
- /// <returns>The number of parameters that were removed</returns>
- /// <exception cref="ArgumentNullException"><paramref name="name" /> is null.</exception>
- public virtual int Remove(string name)
- {
- return RemoveAll(p => p.Name == name);
- }
-
- public string Get(string name)
- {
- var stringComparison = GetStringComparison();
-
- foreach (var pair in this)
- {
- if (string.Equals(pair.Name, name, stringComparison))
- {
- return pair.Value;
- }
- }
-
- return null;
- }
-
- public virtual List<NameValuePair> GetItems(string name)
- {
- var stringComparison = GetStringComparison();
-
- var list = new List<NameValuePair>();
-
- foreach (var pair in this)
- {
- if (string.Equals(pair.Name, name, stringComparison))
- {
- list.Add(pair);
- }
- }
-
- return list;
- }
-
- public virtual List<string> GetValues(string name)
- {
- var stringComparison = GetStringComparison();
-
- var list = new List<string>();
-
- foreach (var pair in this)
- {
- if (string.Equals(pair.Name, name, stringComparison))
- {
- list.Add(pair.Value);
- }
- }
-
- return list;
- }
-
- public Dictionary<string, string> ToDictionary()
- {
- var stringComparer = GetStringComparer();
-
- var headers = new Dictionary<string, string>(stringComparer);
-
- foreach (var pair in this)
- {
- headers[pair.Name] = pair.Value;
- }
-
- return headers;
- }
-
- public IEnumerable<string> Keys
- {
- get
- {
- var keys = new string[this.Count];
-
- for (var i = 0; i < keys.Length; i++)
- {
- keys[i] = this[i].Name;
- }
-
- return keys;
- }
- }
-
- /// <summary>
- /// Gets or sets a query parameter value by name. A query may contain multiple values of the same name
- /// (i.e. "x=1&amp;x=2"), in which case the value is an array, which works for both getting and setting.
- /// </summary>
- /// <param name="name">The query parameter name</param>
- /// <returns>The query parameter value or array of values</returns>
- public string this[string name]
- {
- get => Get(name);
- set => Set(name, value);
- }
-
- private string GetQueryStringValue(NameValuePair pair)
- {
- return pair.Name + "=" + pair.Value;
- }
-
- public override string ToString()
- {
- var vals = this.Select(GetQueryStringValue).ToArray();
-
- return string.Join("&", vals);
- }
- }
-}