示例#1
0
        public void SonarrEpisodeMapper(int id, int seriesId, int epiNum, string airDate, string airDateUtc, bool downloading,
                                        int episodeFileId, int episodenumber, bool hasfile, bool monitoredBool, string overView, int sceneEpiNumber,
                                        int sceneSeasonNum, int seasonNum, string titleString, int tvdbId)
        {
            var source = new SonarrEpisode
            {
                id       = id,
                seriesId = seriesId,
                absoluteEpisodeNumber = epiNum,
                airDate            = airDate,
                airDateUtc         = airDateUtc,
                downloading        = downloading,
                episodeFileId      = episodeFileId,
                episodeNumber      = episodenumber,
                hasFile            = hasfile,
                monitored          = monitoredBool,
                overview           = overView,
                sceneEpisodeNumber = sceneEpiNumber,
                sceneSeasonNumber  = sceneSeasonNum,
                seasonNumber       = seasonNum,
                title         = titleString,
                tvDbEpisodeId = tvdbId
            };

            var target = new EpisodeViewModel();

            target.InjectFrom(new SonarrEpisodeMapper(), source);

            Assert.That(target.ID, Is.EqualTo(id));
            Assert.That(target.SeriesId, Is.EqualTo(seriesId));
            Assert.That(target.AbsoluteEpisodeNumber, Is.EqualTo(epiNum));
            Assert.That(target.AirDate, Is.EqualTo(new DateTime(2009, 09, 17)));
            Assert.That(target.AirDateUtc, Is.EqualTo(new DateTime(2009, 09, 18, 03, 00, 00)));
            Assert.That(target.Downloading, Is.EqualTo(downloading));
            Assert.That(target.EpisodeFileId, Is.EqualTo(episodeFileId));
            Assert.That(target.EpisodeNumber, Is.EqualTo(episodenumber));
            Assert.That(target.HasFile, Is.EqualTo(hasfile));
            Assert.That(target.Monitored, Is.EqualTo(monitoredBool));
            Assert.That(target.Overview, Is.EqualTo(overView));
            Assert.That(target.SceneEpisodeNumber, Is.EqualTo(sceneEpiNumber));
            Assert.That(target.SceneSeasonNumber, Is.EqualTo(sceneSeasonNum));
            Assert.That(target.SeasonNumber, Is.EqualTo(seasonNum));
            Assert.That(target.Title, Is.EqualTo(titleString));
            Assert.That(target.TvDbEpisodeId, Is.EqualTo(tvdbId));
        }
示例#2
0
        /// <summary>
        /// Update the given episodes, currently only monitored is changed, all other modifications are ignored.
        /// Required: All parameters (you should perform a GET/{id} and submit the full body with the changes, as other values may be editable in the future.
        /// </summary>
        /// <param name="episodeInfo">The episode information.</param>
        /// <param name="apiKey">The API key.</param>
        /// <param name="baseUrl">The base URL.</param>
        /// <returns></returns>
        public SonarrEpisode UpdateEpisode(SonarrEpisode episodeInfo, string apiKey, Uri baseUrl)
        {
            var request = new RestRequest {
                Resource = "/api/Episode", Method = Method.PUT
            };

            request.AddHeader("X-Api-Key", apiKey);
            request.AddJsonBody(episodeInfo);
            try
            {
                var policy = RetryHandler.RetryAndWaitPolicy((exception, timespan) =>
                                                             Log.Error(exception, "Exception when calling UpdateEpisode for Sonarr, Retrying {0}", timespan));

                return(policy.Execute(() => Api.ExecuteJson <SonarrEpisode>(request, baseUrl)));
            }
            catch (Exception e)
            {
                Log.Error(e, "There has been an API exception when put the Sonarr UpdateEpisode");
                return(null);
            }
        }