Пример #1
0
        private async Task <Response> RequestMovieAndUpdateStatus(RequestedModel request, string qualityId)
        {
            var result = await MovieSender.Send(request, qualityId);

            if (!result.MovieSendingEnabled)
            {
                // Approve it
                request.Approved = true;
                Log.Warn("We approved movie: {0} but could not add it to CouchPotato/Watcher because it has not been setup", request.Title);

                // Update the record
                var inserted = await Service.UpdateRequestAsync(request);

                return(Response.AsJson(inserted
                    ? new JsonResponseModel {
                    Result = true, Message = "This has been approved, but It has not been sent to CouchPotato/Watcher because it has not been configured."
                }
                    : new JsonResponseModel
                {
                    Result = false,
                    Message = "We could not approve this request. Please try again or check the logs."
                }));
            }

            if (result.Result)
            {
                // Approve it
                request.Approved = true;

                // Update the record
                var inserted = await Service.UpdateRequestAsync(request);

                return(Response.AsJson(inserted
                    ? new JsonResponseModel {
                    Result = true
                }
                    : new JsonResponseModel
                {
                    Result = false,
                    Message = "We could not approve this request. Please try again or check the logs."
                }));
            }
            return
                (Response.AsJson(
                     new
            {
                Result = false,
                Message =
                    "Something went wrong adding the movie! Please check your settings."
            }));
        }
Пример #2
0
        public void Setup()
        {
            F              = new Fixture();
            CpMock         = new Mock <ISettingsService <CouchPotatoSettings> >();
            WatcherMock    = new Mock <ISettingsService <WatcherSettings> >();
            RadarrApiMock  = new Mock <IRadarrApi>();
            RadarrMock     = new Mock <ISettingsService <RadarrSettings> >();
            CpApiMock      = new Mock <ICouchPotatoApi>();
            WatcherApiMock = new Mock <IWatcherApi>();
            CacheMock      = new Mock <ICacheProvider>();


            RadarrMock.Setup(x => x.GetSettingsAsync())
            .ReturnsAsync(F.Build <RadarrSettings>().With(x => x.Enabled, false).Create());
            WatcherMock.Setup(x => x.GetSettingsAsync())
            .ReturnsAsync(F.Build <WatcherSettings>().With(x => x.Enabled, false).Create());
            CpMock.Setup(x => x.GetSettingsAsync())
            .ReturnsAsync(F.Build <CouchPotatoSettings>().With(x => x.Enabled, false).Create());

            Sender = new MovieSender(CpMock.Object, WatcherMock.Object, CpApiMock.Object, WatcherApiMock.Object, RadarrApiMock.Object, RadarrMock.Object, CacheMock.Object);
        }
Пример #3
0
        private bool ProcessMovies(RequestedModel model)
        {
            try
            {
                var result = MovieSender.Send(model).Result;
                if (result.Result)
                {
                    // Approve it now
                    model.Approved = true;
                    RequestService.UpdateRequest(model);
                    return(true);
                }
                ;

                return(false);
            }
            catch (Exception e)
            {
                Log.Error(e);
                return(false); // It fails so it will get added back into the queue
            }
        }
Пример #4
0
        private async Task <Response> UpdateRequestsAsync(RequestedModel[] requestedModels)
        {
            var updatedRequests = new List <RequestedModel>();

            foreach (var r in requestedModels)
            {
                if (r.Type == RequestType.Movie)
                {
                    var movieResult = await MovieSender.Send(r);

                    if (movieResult.Result)
                    {
                        r.Approved = true;
                        updatedRequests.Add(r);
                    }
                    else
                    {
                        Log.Error("Could not approve and send the movie {0} to couch potato!", r.Title);
                    }
                    if (!movieResult.MovieSendingEnabled)
                    {
                        r.Approved = true;
                        updatedRequests.Add(r);
                    }
                }
                if (r.Type == RequestType.TvShow)
                {
                    var sender = new TvSenderOld(SonarrApi, SickRageApi, Cache); // TODO put back
                    var sr     = await SickRageSettings.GetSettingsAsync();

                    var sonarr = await SonarrSettings.GetSettingsAsync();

                    if (sr.Enabled)
                    {
                        var res = sender.SendToSickRage(sr, r);
                        if (res?.result == "success")
                        {
                            r.Approved = true;
                            updatedRequests.Add(r);
                        }
                        else
                        {
                            Log.Error("Could not approve and send the TV {0} to SickRage!", r.Title);
                            Log.Error("SickRage Message: {0}", res?.message);
                        }
                    }

                    else if (sonarr.Enabled)
                    {
                        var res = await sender.SendToSonarr(sonarr, r);

                        if (!string.IsNullOrEmpty(res?.title))
                        {
                            r.Approved = true;
                            updatedRequests.Add(r);
                        }
                        else
                        {
                            Log.Error("Could not approve and send the TV {0} to Sonarr!", r.Title);
                            res?.ErrorMessages?.ForEach(x => Log.Error("Error messages: {0}", x));
                        }
                    }
                    else
                    {
                        r.Approved = true;
                        updatedRequests.Add(r);
                    }
                }
            }
            try
            {
                var result = await Service.BatchUpdateAsync(updatedRequests);

                return(Response.AsJson(result
                    ? new JsonResponseModel {
                    Result = true
                }
                    : new JsonResponseModel {
                    Result = false, Message = "We could not approve all of the requests. Please try again or check the logs."
                }));
            }
            catch (Exception e)
            {
                Log.Fatal(e);
                return(Response.AsJson(new JsonResponseModel {
                    Result = false, Message = "Something bad happened, please check the logs!"
                }));
            }
        }