merge and small changes

This commit is contained in:
tidusjar 2016-04-20 13:41:34 +01:00
commit 83bbd3fd88
6 changed files with 44 additions and 12 deletions

View file

@ -28,6 +28,11 @@ namespace PlexRequests.Core
{ {
public class CacheKeys public class CacheKeys
{ {
public struct TimeFrameMinutes
{
public const int SchedulerCaching = 60;
}
public const string PlexLibaries = "PlexLibaries"; public const string PlexLibaries = "PlexLibaries";
public const string TvDbToken = "TheTvDbApiToken"; public const string TvDbToken = "TheTvDbApiToken";

View file

@ -73,8 +73,8 @@ namespace PlexRequests.Helpers
/// <returns></returns> /// <returns></returns>
public T Get<T>(string key) where T : class public T Get<T>(string key) where T : class
{ {
var item = Cache.Get(key) as T; lock (key)
return item; return Cache.Get(key) as T;
} }
/// <summary> /// <summary>
@ -86,7 +86,11 @@ namespace PlexRequests.Helpers
public void Set(string key, object data, int cacheTime = 20) public void Set(string key, object data, int cacheTime = 20)
{ {
var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime) }; var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime) };
Cache.Add(new CacheItem(key, data), policy); lock (key)
{
Cache.Remove(key);
Cache.Add(new CacheItem(key, data), policy);
}
} }
/// <summary> /// <summary>
@ -98,7 +102,10 @@ namespace PlexRequests.Helpers
var keys = Cache.Where(x => x.Key.Contains(key)); var keys = Cache.Where(x => x.Key.Contains(key));
foreach (var k in keys) foreach (var k in keys)
{ {
Cache.Remove(k.Key); lock (key)
{
Cache.Remove(k.Key);
}
} }
} }
} }

View file

@ -63,7 +63,10 @@ namespace PlexRequests.Services.Jobs
{ {
Log.Trace("Getting all movies from CouchPotato"); Log.Trace("Getting all movies from CouchPotato");
var movies = CpApi.GetMovies(settings.FullUri, settings.ApiKey, new[] { "active" }); var movies = CpApi.GetMovies(settings.FullUri, settings.ApiKey, new[] { "active" });
Cache.Set(CacheKeys.CouchPotatoQueued, movies, 10); if (movies != null)
{
Cache.Set(CacheKeys.CouchPotatoQueued, movies, CacheKeys.TimeFrameMinutes.SchedulerCaching);
}
} }
} }

View file

@ -238,7 +238,7 @@ namespace PlexRequests.Services.Jobs
private List<PlexSearch> CachedLibraries(AuthenticationSettings authSettings, PlexSettings plexSettings, bool setCache) private List<PlexSearch> CachedLibraries(AuthenticationSettings authSettings, PlexSettings plexSettings, bool setCache)
{ {
Log.Trace("Obtaining library sections from Plex for the following request"); Log.Trace("Obtaining library sections from Plex");
List<PlexSearch> results = new List<PlexSearch>(); List<PlexSearch> results = new List<PlexSearch>();
@ -250,12 +250,22 @@ namespace PlexRequests.Services.Jobs
if (setCache) if (setCache)
{ {
results = GetLibraries(authSettings, plexSettings); Log.Trace("Plex Lib API Call");
Cache.Set(CacheKeys.PlexLibaries, results, 10); results = GetLibraries(authSettings, plexSettings);
Log.Trace("Plex Lib Cache Set Call");
if (results != null)
{
Cache.Set(CacheKeys.PlexLibaries, results, CacheKeys.TimeFrameMinutes.SchedulerCaching);
}
} }
else else
{ {
results = Cache.GetOrSet(CacheKeys.PlexLibaries, () => GetLibraries(authSettings, plexSettings), 10); Log.Trace("Plex Lib GetSet Call");
results = Cache.GetOrSet(CacheKeys.PlexLibaries, () => {
Log.Trace("Plex Lib API Call (inside getset)");
return GetLibraries(authSettings, plexSettings);
}, CacheKeys.TimeFrameMinutes.SchedulerCaching);
} }
return results; return results;
} }
@ -278,6 +288,7 @@ namespace PlexRequests.Services.Jobs
} }
} }
Log.Trace("Returning Plex Libs");
return libs; return libs;
} }

View file

@ -62,8 +62,11 @@ namespace PlexRequests.Services.Jobs
if (settings.Enabled) if (settings.Enabled)
{ {
Log.Trace("Getting all shows from SickRage"); Log.Trace("Getting all shows from SickRage");
var movies = SrApi.GetShows(settings.ApiKey, settings.FullUri); var shows = SrApi.GetShows(settings.ApiKey, settings.FullUri);
Cache.Set(CacheKeys.SickRageQueued, movies.Result); if (shows != null)
{
Cache.Set(CacheKeys.SickRageQueued, shows.Result, CacheKeys.TimeFrameMinutes.SchedulerCaching);
}
} }
} }

View file

@ -64,7 +64,10 @@ namespace PlexRequests.Services.Jobs
{ {
Log.Trace("Getting all tv series from Sonarr"); Log.Trace("Getting all tv series from Sonarr");
var series = SonarrApi.GetSeries(settings.ApiKey, settings.FullUri); var series = SonarrApi.GetSeries(settings.ApiKey, settings.FullUri);
Cache.Set(CacheKeys.SonarrQueued, series, 10); if (series != null)
{
Cache.Set(CacheKeys.SonarrQueued, series, CacheKeys.TimeFrameMinutes.SchedulerCaching);
}
} }
} }