public string BuildString(S4ULimits limits) { var entries = limits.Custom.Select(extra => new KeyValuePair<string, string>(extra.Key, extra.Value)).ToList(); if (limits.Season.HasValue) { entries.Add(new KeyValuePair<string, string>("Season", limits.Season.Value.ToString())); } if(limits.Episode.HasValue) { entries.Add(new KeyValuePair<string, string>("Episode", limits.Episode.Value.ToString())); } if (limits.Limit.HasValue) { entries.Add(new KeyValuePair<string, string>("Limit", limits.Limit.Value.ToString())); } if (limits.Year.HasValue) { entries.Add(new KeyValuePair<string, string>("Year", limits.Year.Value.ToString())); } if (!entries.Any()) return string.Empty; var parameters = entries.Select(e => $"{e.Key}={e.Value}"); return "/" + string.Join("&", parameters); }
private Response Search(string searchType, string release, S4ULimits limits) { string limitsString = _limitsBuilder.BuildString(limits); var uri = new Uri(_baseUrl + searchType + "/" + release + limitsString); using (var xmlStream = new WebDownloader().OpenRead(uri)) { return (Response) _xmlSerializer.Deserialize(xmlStream); } }
public void BuildString_Scenarios_StringMatches(int? season, int? episode, int? limit, int? year, string expected) { var limitsBuilder = new LimitsBuilder(); var limits = new S4ULimits { Season = season, Episode = episode, Limit = limit, Year = year}; var result = limitsBuilder.BuildString(limits); Assert.That(result, Is.EqualTo(expected)); }
public void BuildString_NoLimits_EmptyString( int season, LimitsBuilder sut) { var limits = new S4ULimits(); var result = sut.BuildString(limits); Assert.That(result, Is.Empty); }
public void SearchByTvdbIdAndEpisodeId_ReleaseExists_ContainsSubs() { var api = new S4UApi(new S4USettings { ApiKey = "ApiTestKey" }); var limits = new S4ULimits(); limits.Custom.Add("tvdb_ep_id", "308907"); var result = api.SearchByTvdbId(79501, null, limits); Assert.That(result.Series.First().Subs, Is.Not.Empty); }
public void BuildString_CustomLimits_CustomsAreIncludedInString( KeyValuePair<string, string> custom, S4ULimits limits, LimitsBuilder sut) { var expected = custom.Key + "=" + custom.Value; limits.Custom.Add(custom); var result = sut.BuildString(limits); Assert.That(result.Contains(expected)); }
public Response SearchByTvdbId(int tvdbId, int? tvdbEpisodeId = null, S4ULimits limits = null) { return Search("tvdb", tvdbId.ToString(), limits); }
public Response SearchByTitle(string title, S4ULimits limits = null) { if (title == null) throw new ArgumentNullException(nameof(title)); return Search("title", title, limits); }
public Response SearchByRelease(string release, S4ULimits limits = null) { if (release == null) throw new ArgumentNullException(nameof(release)); return Search("rls", release, limits); }
public Response SearchByImdbId(int imdbId, S4ULimits limits = null) { return Search("imdb", imdbId.ToString("0000000"), limits); }