diff options
| author | crobibero <cody@robibe.ro> | 2020-06-29 12:54:47 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2020-06-29 12:54:47 -0600 |
| commit | da405729799c426a446bf1705262286e780f8f7f (patch) | |
| tree | 07c4ac3aa885575652d2925647f3a6667caeb272 /Jellyfin.Api/Helpers/RequestHelpers.cs | |
| parent | 325808d271a1e53bcf3b15f17b0111c0ce306698 (diff) | |
| parent | dbf939467fae7106afc722b31f43bfb950945664 (diff) | |
Merge remote-tracking branch 'upstream/api-migration' into api-studios
Diffstat (limited to 'Jellyfin.Api/Helpers/RequestHelpers.cs')
| -rw-r--r-- | Jellyfin.Api/Helpers/RequestHelpers.cs | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/Jellyfin.Api/Helpers/RequestHelpers.cs b/Jellyfin.Api/Helpers/RequestHelpers.cs index eec923292..f10c8597e 100644 --- a/Jellyfin.Api/Helpers/RequestHelpers.cs +++ b/Jellyfin.Api/Helpers/RequestHelpers.cs @@ -4,6 +4,7 @@ using Jellyfin.Data.Enums; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Session; using MediaBrowser.Model.Querying; +using MediaBrowser.Model.Entities; using Microsoft.AspNetCore.Http; namespace Jellyfin.Api.Helpers @@ -20,7 +21,7 @@ namespace Jellyfin.Api.Helpers /// <param name="separator">The char that separates the substrings.</param> /// <param name="removeEmpty">Option to remove empty substrings from the array.</param> /// <returns>An array of the substrings.</returns> - internal static string[] Split(string value, char separator, bool removeEmpty) + internal static string[] Split(string? value, char separator, bool removeEmpty) { if (string.IsNullOrWhiteSpace(value)) { @@ -94,6 +95,44 @@ namespace Jellyfin.Api.Helpers } /// <summary> + /// Get orderby. + /// </summary> + /// <param name="sortBy">Sort by.</param> + /// <param name="requestedSortOrder">Sort order.</param> + /// <returns>Resulting order by.</returns> + internal static ValueTuple<string, SortOrder>[] GetOrderBy(string? sortBy, string? requestedSortOrder) + { + if (string.IsNullOrEmpty(sortBy)) + { + return Array.Empty<ValueTuple<string, SortOrder>>(); + } + + var vals = sortBy.Split(','); + if (string.IsNullOrWhiteSpace(requestedSortOrder)) + { + requestedSortOrder = "Ascending"; + } + + var sortOrders = requestedSortOrder.Split(','); + + var result = new ValueTuple<string, SortOrder>[vals.Length]; + + for (var i = 0; i < vals.Length; i++) + { + var sortOrderIndex = sortOrders.Length > i ? i : 0; + + var sortOrderValue = sortOrders.Length > sortOrderIndex ? sortOrders[sortOrderIndex] : null; + var sortOrder = string.Equals(sortOrderValue, "Descending", StringComparison.OrdinalIgnoreCase) + ? SortOrder.Descending + : SortOrder.Ascending; + + result[i] = new ValueTuple<string, SortOrder>(vals[i], sortOrder); + } + + return result; + } + + /// <summary> /// Gets the filters. /// </summary> /// <param name="filters">The filter string.</param> |
