Skip to content

Commit a9a0f23

Browse files
committed
fixed count limiters
1 parent 6c6291a commit a9a0f23

File tree

3 files changed

+46
-12
lines changed

3 files changed

+46
-12
lines changed

Source/Plex.Api/Clients/ClientUtilities.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ namespace Plex.Api.Clients
44

55
public static class ClientUtilities
66
{
7+
/// <summary>
8+
/// Build Client Limit Headers
9+
/// </summary>
10+
/// <param name="from">Start Record</param>
11+
/// <param name="to">Number of records to return</param>
12+
/// <returns></returns>
713
public static Dictionary<string, string> GetClientLimitHeaders(int from, int to)
814
{
915
var plexHeaders = new Dictionary<string, string>
@@ -15,6 +21,11 @@ public static Dictionary<string, string> GetClientLimitHeaders(int from, int to
1521
return plexHeaders;
1622
}
1723

24+
/// <summary>
25+
/// Get Client Identifier Header
26+
/// </summary>
27+
/// <param name="clientId">Client Id</param>
28+
/// <returns></returns>
1829
public static Dictionary<string, string> GetClientIdentifierHeader(string clientId)
1930
{
2031
var plexHeaders = new Dictionary<string, string>
@@ -24,6 +35,11 @@ public static Dictionary<string, string> GetClientIdentifierHeader(string client
2435
return plexHeaders;
2536
}
2637

38+
/// <summary>
39+
/// Get Client Options Header
40+
/// </summary>
41+
/// <param name="clientOptions">Client Options</param>
42+
/// <returns></returns>
2743
public static Dictionary<string, string> GetClientMetaHeaders(ClientOptions clientOptions)
2844
{
2945
var plexHeaders = new Dictionary<string, string>

Source/Plex.Api/Clients/PlexLibraryClient.cs

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace Plex.Api.Clients
22
{
33
using System.Collections.Generic;
4+
using System.Net;
45
using System.Net.Http;
56
using System.Threading.Tasks;
67
using Api;
@@ -93,32 +94,47 @@ public async Task<MediaContainer> LibrarySearch(string authToken, string plexSer
9394
{
9495
{"title", title},
9596
{"sort", sort},
96-
{"libtype", libraryType},
97-
{"container_start", start.ToString()},
98-
{"max_results", count.ToString()}
97+
{"libtype", libraryType}
9998
};
10099

101100
foreach (var item in filters)
102101
{
103102
queryParams.Add(item.Key, item.Value);
104103
}
105104

106-
return await this.FetchWithWrapper<MediaContainer>(plexServerHost, $"library/sections/{libraryKey}/all",
107-
authToken, HttpMethod.Get, queryParams);
105+
var apiRequest =
106+
new ApiRequestBuilder(plexServerHost, $"library/sections/{libraryKey}/all", HttpMethod.Get)
107+
.AddPlexToken(authToken)
108+
.AddQueryParams(queryParams)
109+
.AddQueryParams(ClientUtilities.GetClientIdentifierHeader(this.clientOptions.ClientId))
110+
.AddQueryParams(ClientUtilities.GetClientLimitHeaders(start, count))
111+
.AcceptJson()
112+
.Build();
113+
114+
var wrapper = await this.apiService.InvokeApiAsync<GenericWrapper<MediaContainer>>(apiRequest);
115+
return wrapper.Container;
108116
}
109117

110118
/// <inheritdoc/>
111119
public async Task<MediaContainer> GetAll(string authToken, string plexServerHost, string key, string sort, int start, int count)
112120
{
113121
var queryParams = new Dictionary<string, string>
114122
{
115-
{"sort", sort},
116-
{"container_start", start.ToString()},
117-
{"max_results", count.ToString()}
123+
{"sort", sort}
118124
};
119125

120-
return await this.FetchWithWrapper<MediaContainer>(plexServerHost, $"library/sections/{key}/all",
121-
authToken, HttpMethod.Get, queryParams);
126+
var apiRequest =
127+
new ApiRequestBuilder(plexServerHost, $"library/sections/{key}/all", HttpMethod.Get)
128+
.AddPlexToken(authToken)
129+
.AddQueryParams(queryParams)
130+
.AddQueryParams(ClientUtilities.GetClientIdentifierHeader(this.clientOptions.ClientId))
131+
.AddQueryParams(ClientUtilities.GetClientLimitHeaders(start, count))
132+
.AcceptJson()
133+
.Build();
134+
135+
var wrapper = await this.apiService.InvokeApiAsync<GenericWrapper<MediaContainer>>(apiRequest);
136+
137+
return wrapper.Container;
122138
}
123139

124140
private async Task<T> FetchWithWrapper<T>(string baseUrl, string endpoint, string authToken, HttpMethod method,

Tests/Plex.Api.Test/Tests/LibraryTest.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,19 @@ public async void Test_LibrarySearchByName()
108108
var library = this.fixture.Server.Libraries().Result.Single(c => c.Title == "Movies");
109109

110110
const string title = "Harry Potter";
111+
const int start = 0;
112+
const int count = 2;
111113
var filters = new Dictionary<string, string>();
112114

113-
var items = await library.Search(title, "audienceRating:desc", string.Empty, filters);
115+
var items = await library.Search(title, "audienceRating:desc", string.Empty, filters, start, count);
114116
foreach (var item in items.Media)
115117
{
116118
this.output.WriteLine("Title: " + item.Title);
117119
this.output.WriteLine("Year: " + item.Year);
118120
this.output.WriteLine("Rating: " + item.AudienceRating);
119121
}
120122
Assert.NotNull(items);
121-
Assert.Equal(8, items.Media.Count);
123+
Assert.Equal(count, items.Media.Count);
122124
}
123125

124126
[Fact]

0 commit comments

Comments
 (0)