예제 #1
0
        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);
        }
예제 #2
0
 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);
        }
예제 #5
0
        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));
        }
예제 #7
0
 public Response SearchByTvdbId(int tvdbId, int? tvdbEpisodeId = null, S4ULimits limits = null)
 {
     return Search("tvdb", tvdbId.ToString(), limits);
 }
예제 #8
0
        public Response SearchByTitle(string title, S4ULimits limits = null)
        {
            if (title == null) throw new ArgumentNullException(nameof(title));

            return Search("title", title, limits);
        }
예제 #9
0
        public Response SearchByRelease(string release, S4ULimits limits = null)
        {
            if (release == null) throw new ArgumentNullException(nameof(release));

            return Search("rls", release, limits);
        }
예제 #10
0
 public Response SearchByImdbId(int imdbId, S4ULimits limits = null)
 {
     return Search("imdb", imdbId.ToString("0000000"), limits);
 }