public async Task <SearchResult> FindByNameAsync(string prefix, TimeSpan timeout, string year = null, FilmType type = FilmType.movie, CancellationToken cancellation = default) { var result = new SearchResult { Films = Array.Empty <FilmData>() }; var page = 1; do { var queryString = HttpUtility.ParseQueryString(string.Empty); queryString.Add("apikey", apikey); queryString.Add("s", prefix); queryString.Add("year", year); queryString.Add("type", type.ToString()); queryString.Add("page", page++.ToString()); var request = new HttpRequestMessage(HttpMethod.Get, "?" + queryString); request.Headers.Add("Timeout", timeout.Ticks.ToString()); var response = await httpClient.SendAsync(request, cancellation).ConfigureAwait(false); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsAsync <SearchResult>(cancellation).ConfigureAwait(false); content.Films = content.Films?.Union(result.Films).ToArray(); result = content; } while (result.Films.Length < result.TotalResults); return(result); }
public async Task <SearchResult> FindFilmsAsync(string name, TimeSpan timeout, string year = null, FilmType type = FilmType.movie, CancellationToken cancellation = default) { var queryString = HttpUtility.ParseQueryString(string.Empty); queryString.Add("name", name); queryString.Add("year", year); queryString.Add("type", type.ToString()); var request = new HttpRequestMessage(HttpMethod.Get, $"/Films/FindByPrefix?{queryString}"); request.Headers.Add("Timeout", timeout.Ticks.ToString()); var response = await httpClient.SendAsync(request, cancellation).ConfigureAwait(false); response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsAsync <SearchResult>(cancellation).ConfigureAwait(false)); }
public async Task <FilmFullData> GetByNameAsync(string name, TimeSpan timeout, string year = null, FilmType type = FilmType.movie, CancellationToken cancellation = default) { var queryString = HttpUtility.ParseQueryString(string.Empty); queryString.Add("apikey", apikey); queryString.Add("t", name); queryString.Add("y", year); queryString.Add("type", type.ToString()); var request = new HttpRequestMessage(HttpMethod.Get, "?" + queryString); request.Headers.Add("Timeout", timeout.Ticks.ToString()); var response = await httpClient.SendAsync(request, cancellation).ConfigureAwait(false); response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsAsync <FilmFullData>(cancellation).ConfigureAwait(false)); }