public void Queued() { Log.Trace("Getting the settings"); var settings = CpSettings.GetSettings(); if (settings.Enabled) { Job.SetRunning(true, JobNames.CpCacher); Log.Trace("Getting all movies from CouchPotato"); try { var movies = CpApi.GetMovies(settings.FullUri, settings.ApiKey, new[] { "active" }); if (movies != null) { Cache.Set(CacheKeys.CouchPotatoQueued, movies, CacheKeys.TimeFrameMinutes.SchedulerCaching); } } catch (System.Exception ex) { Log.Error(ex, "Failed caching queued items from CouchPotato"); } finally { Job.Record(JobNames.CpCacher); Job.SetRunning(false, JobNames.CpCacher); } } }
private async Task <List <QualityModel> > GetQualityProfiles() { var qualities = new List <QualityModel>(); if (IsAdmin) { var cpSettings = CpSettings.GetSettings(); if (cpSettings.Enabled) { try { var result = await Cache.GetOrSetAsync(CacheKeys.CouchPotatoQualityProfiles, async() => { return(await Task.Run(() => CpApi.GetProfiles(cpSettings.FullUri, cpSettings.ApiKey)).ConfigureAwait(false)); }); if (result != null) { qualities = result.list.Select(x => new QualityModel { Id = x._id, Name = x.label }).ToList(); } } catch (Exception e) { Log.Info(e); } } } return(qualities); }
public void Queued(long check) { Log.Trace("This is check no. {0}", check); Log.Trace("Getting the settings"); var settings = CpSettings.GetSettings(); if (settings.Enabled) { Log.Trace("Getting all movies from CouchPotato"); var movies = CpApi.GetMovies(settings.FullUri, settings.ApiKey, new[] { "active" }); Cache.Set(CacheKeys.CouchPotatoQueued, movies, 10); } }
private void ProcessTransientErrors(List <RequestQueue> requests) { var sonarrSettings = SonarrSettings.GetSettings(); var sickrageSettings = SickrageSettings.GetSettings(); var cpSettings = CpSettings.GetSettings(); var hpSettings = HeadphoneSettings.GetSettings(); if (!requests.Any()) { return; } foreach (var request in requests) { var model = ByteConverterHelper.ReturnObject <RequestedModel>(request.Content); bool result; switch (request.Type) { case RequestType.Movie: result = ProcessMovies(model); break; case RequestType.TvShow: result = ProcessTvShow(model, sonarrSettings, sickrageSettings); break; case RequestType.Album: result = ProcessAlbums(model, hpSettings); break; default: throw new ArgumentOutOfRangeException(); } if (!result) { // we now have the info but couldn't add it, so do nothing now. request.LastRetry = DateTime.UtcNow; Repo.Update(request); } else { // Successful, remove from the fault queue Repo.Delete(request); } } }
private Response GetCpSettings() { var model = new ApiModel <CouchPotatoSettings>(); try { var settings = CpSettings.GetSettings(); model.Data = settings; return(ReturnReponse(model)); } catch (Exception e) { model.ErrorMessage = e.Message; model.Error = true; return(ReturnReponse(model)); } }
private Response GetMovies() // TODO: async await the API calls { var settings = PrSettings.GetSettings(); List <Task> taskList = new List <Task>(); List <RequestedModel> dbMovies = new List <RequestedModel>(); taskList.Add(Task.Factory.StartNew(() => { return(Service.GetAll().Where(x => x.Type == RequestType.Movie)); }).ContinueWith((t) => { dbMovies = t.Result.ToList(); if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbMovies = dbMovies.Where(x => x.UserHasRequested(Username)).ToList(); } })); List <QualityModel> qualities = new List <QualityModel>(); if (IsAdmin) { var cpSettings = CpSettings.GetSettings(); if (cpSettings.Enabled) { taskList.Add(Task.Factory.StartNew(() => { return(Cache.GetOrSet(CacheKeys.CouchPotatoQualityProfiles, () => { return CpApi.GetProfiles(cpSettings.FullUri, cpSettings.ApiKey); // TODO: cache this! })); }).ContinueWith((t) => { qualities = t.Result.list.Select(x => new QualityModel() { Id = x._id, Name = x.label }).ToList(); })); } } Task.WaitAll(taskList.ToArray()); var viewModel = dbMovies.Select(movie => { return(new RequestViewModel { ProviderId = movie.ProviderId, Type = movie.Type, Status = movie.Status, ImdbId = movie.ImdbId, Id = movie.Id, PosterPath = movie.PosterPath, ReleaseDate = movie.ReleaseDate, ReleaseDateTicks = movie.ReleaseDate.Ticks, RequestedDate = movie.RequestedDate, Released = DateTime.Now > movie.ReleaseDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(movie.RequestedDate, DateTimeOffset).Ticks, Approved = movie.Available || movie.Approved, Title = movie.Title, Overview = movie.Overview, RequestedUsers = IsAdmin ? movie.AllUsers.ToArray() : new string[] { }, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, Admin = IsAdmin, Issues = movie.Issues.ToString().CamelCaseToWords(), OtherMessage = movie.OtherMessage, AdminNotes = movie.AdminNote, Qualities = qualities.ToArray() }); }).ToList(); return(Response.AsJson(viewModel)); }
private async Task <Response> GetMovies() { var settings = PrSettings.GetSettings(); var allRequests = await Service.GetAllAsync(); allRequests = allRequests.Where(x => x.Type == RequestType.Movie); var dbMovies = allRequests.ToList(); if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbMovies = dbMovies.Where(x => x.UserHasRequested(Username)).ToList(); } List <QualityModel> qualities = new List <QualityModel>(); if (IsAdmin) { var cpSettings = CpSettings.GetSettings(); if (cpSettings.Enabled) { try { var result = await Cache.GetOrSetAsync(CacheKeys.CouchPotatoQualityProfiles, async() => { return(await Task.Run(() => CpApi.GetProfiles(cpSettings.FullUri, cpSettings.ApiKey)).ConfigureAwait(false)); }); if (result != null) { qualities = result.list.Select(x => new QualityModel { Id = x._id, Name = x.label }).ToList(); } } catch (Exception e) { Log.Info(e); } } } var viewModel = dbMovies.Select(movie => new RequestViewModel { ProviderId = movie.ProviderId, Type = movie.Type, Status = movie.Status, ImdbId = movie.ImdbId, Id = movie.Id, PosterPath = movie.PosterPath, ReleaseDate = movie.ReleaseDate, ReleaseDateTicks = movie.ReleaseDate.Ticks, RequestedDate = movie.RequestedDate, Released = DateTime.Now > movie.ReleaseDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(movie.RequestedDate, DateTimeOffset).Ticks, Approved = movie.Available || movie.Approved, Title = movie.Title, Overview = movie.Overview, RequestedUsers = IsAdmin ? movie.AllUsers.ToArray() : new string[] { }, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, Admin = IsAdmin, IssueId = movie.IssueId, Qualities = qualities.ToArray() }).ToList(); return(Response.AsJson(viewModel)); }