Disable platform logo loading - these aren't used, added try/catch block around Hasheous to deal with failures.

This commit is contained in:
Michael Green
2024-06-28 11:03:59 +10:00
parent 30be179367
commit d1f157ac08
4 changed files with 95 additions and 75 deletions

View File

@@ -264,7 +264,12 @@ namespace gaseous_server.Classes
if (Config.MetadataConfiguration.SignatureSource == HasheousClient.Models.MetadataModel.SignatureSources.Hasheous)
{
HasheousClient.Hasheous hasheous = new HasheousClient.Hasheous();
SignatureLookupItem? HasheousResult = hasheous.RetrieveFromHasheousAsync(new HashLookupModel{
SignatureLookupItem? HasheousResult = null;
try
{
HasheousResult = hasheous.RetrieveFromHasheousAsync(new HashLookupModel
{
MD5 = hash.md5hash,
SHA1 = hash.sha1hash
});
@@ -296,6 +301,11 @@ namespace gaseous_server.Classes
}
}
}
catch (Exception ex)
{
Logging.Log(Logging.LogType.Warning, "Get Signature", "Error retrieving signature from Hasheous", ex);
}
}
return null;
}

View File

@@ -13,7 +13,7 @@ namespace gaseous_server.Classes.Metadata
{
}
public static PlatformVersion? GetPlatformVersion(long Id, Platform ParentPlatform)
public static PlatformVersion? GetPlatformVersion(long Id, Platform ParentPlatform, bool GetImages = false)
{
if (Id == 0)
{
@@ -21,18 +21,18 @@ namespace gaseous_server.Classes.Metadata
}
else
{
Task<PlatformVersion> RetVal = _GetPlatformVersion(SearchUsing.id, Id, ParentPlatform);
Task<PlatformVersion> RetVal = _GetPlatformVersion(SearchUsing.id, Id, ParentPlatform, GetImages);
return RetVal.Result;
}
}
public static PlatformVersion GetPlatformVersion(string Slug, Platform ParentPlatform)
public static PlatformVersion GetPlatformVersion(string Slug, Platform ParentPlatform, bool GetImages)
{
Task<PlatformVersion> RetVal = _GetPlatformVersion(SearchUsing.slug, Slug, ParentPlatform);
Task<PlatformVersion> RetVal = _GetPlatformVersion(SearchUsing.slug, Slug, ParentPlatform, GetImages);
return RetVal.Result;
}
private static async Task<PlatformVersion> _GetPlatformVersion(SearchUsing searchUsing, object searchValue, Platform ParentPlatform)
private static async Task<PlatformVersion> _GetPlatformVersion(SearchUsing searchUsing, object searchValue, Platform ParentPlatform, bool GetImages)
{
// check database first
Storage.CacheStatus? cacheStatus = new Storage.CacheStatus();
@@ -67,7 +67,7 @@ namespace gaseous_server.Classes.Metadata
if (returnValue != null)
{
Storage.NewCacheValue(returnValue);
UpdateSubClasses(ParentPlatform, returnValue);
UpdateSubClasses(ParentPlatform, returnValue, GetImages);
}
return returnValue;
case Storage.CacheStatus.Expired:
@@ -75,7 +75,7 @@ namespace gaseous_server.Classes.Metadata
{
returnValue = await GetObjectFromServer(WhereClause);
Storage.NewCacheValue(returnValue, true);
UpdateSubClasses(ParentPlatform, returnValue);
UpdateSubClasses(ParentPlatform, returnValue, GetImages);
}
catch (Exception ex)
{
@@ -90,7 +90,9 @@ namespace gaseous_server.Classes.Metadata
}
}
private static void UpdateSubClasses(Platform ParentPlatform, PlatformVersion platformVersion)
private static void UpdateSubClasses(Platform ParentPlatform, PlatformVersion platformVersion, bool GetImages)
{
if (GetImages == true)
{
if (platformVersion.PlatformLogo != null)
{
@@ -104,6 +106,7 @@ namespace gaseous_server.Classes.Metadata
}
}
}
}
private enum SearchUsing
{

View File

@@ -15,7 +15,7 @@ namespace gaseous_server.Classes.Metadata
}
public static Platform? GetPlatform(long Id, bool forceRefresh = false)
public static Platform? GetPlatform(long Id, bool forceRefresh = false, bool GetImages = false)
{
if (Id == 0)
{
@@ -41,7 +41,7 @@ namespace gaseous_server.Classes.Metadata
{
try
{
Task<Platform> RetVal = _GetPlatform(SearchUsing.id, Id, forceRefresh);
Task<Platform> RetVal = _GetPlatform(SearchUsing.id, Id, forceRefresh, GetImages);
return RetVal.Result;
}
catch (Exception ex)
@@ -52,13 +52,13 @@ namespace gaseous_server.Classes.Metadata
}
}
public static Platform GetPlatform(string Slug, bool forceRefresh = false)
public static Platform GetPlatform(string Slug, bool forceRefresh = false, bool GetImages = false)
{
Task<Platform> RetVal = _GetPlatform(SearchUsing.slug, Slug, forceRefresh);
Task<Platform> RetVal = _GetPlatform(SearchUsing.slug, Slug, forceRefresh, GetImages);
return RetVal.Result;
}
private static async Task<Platform> _GetPlatform(SearchUsing searchUsing, object searchValue, bool forceRefresh)
private static async Task<Platform> _GetPlatform(SearchUsing searchUsing, object searchValue, bool forceRefresh, bool GetImages)
{
// check database first
Storage.CacheStatus? cacheStatus = new Storage.CacheStatus();
@@ -96,7 +96,7 @@ namespace gaseous_server.Classes.Metadata
case Storage.CacheStatus.NotPresent:
returnValue = await GetObjectFromServer(WhereClause);
Storage.NewCacheValue(returnValue);
UpdateSubClasses(returnValue);
UpdateSubClasses(returnValue, GetImages);
AddPlatformMapping(returnValue);
return returnValue;
case Storage.CacheStatus.Expired:
@@ -104,7 +104,7 @@ namespace gaseous_server.Classes.Metadata
{
returnValue = await GetObjectFromServer(WhereClause);
Storage.NewCacheValue(returnValue, true);
UpdateSubClasses(returnValue);
UpdateSubClasses(returnValue, GetImages);
AddPlatformMapping(returnValue);
return returnValue;
}
@@ -120,7 +120,7 @@ namespace gaseous_server.Classes.Metadata
}
}
private static void UpdateSubClasses(Platform platform)
private static void UpdateSubClasses(Platform platform, bool GetImages)
{
if (platform.Versions != null)
{
@@ -130,6 +130,8 @@ namespace gaseous_server.Classes.Metadata
}
}
if (GetImages == true)
{
if (platform.PlatformLogo != null)
{
try
@@ -142,6 +144,7 @@ namespace gaseous_server.Classes.Metadata
}
}
}
}
private static void AddPlatformMapping(Platform platform)
{
@@ -158,7 +161,8 @@ namespace gaseous_server.Classes.Metadata
{
Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + platform.Name + " from predefined data.");
// doesn't exist - add it
item = new Models.PlatformMapping.PlatformMapItem{
item = new Models.PlatformMapping.PlatformMapItem
{
IGDBId = (long)platform.Id,
IGDBName = platform.Name,
IGDBSlug = platform.Slug,

View File

@@ -27,7 +27,8 @@ namespace gaseous_server.Models
{
string rawJson = reader.ReadToEnd();
List<PlatformMapItem> platforms = new List<PlatformMapItem>();
Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings{
Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings
{
MaxDepth = 64
};
platforms = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PlatformMapItem>>(rawJson, jsonSerializerSettings);
@@ -74,7 +75,7 @@ namespace gaseous_server.Models
foreach (PlatformMapItem mapItem in platforms)
{
// get the IGDB platform data
Platform platform = Platforms.GetPlatform(mapItem.IGDBId);
Platform platform = Platforms.GetPlatform(mapItem.IGDBId, false);
try
{
@@ -286,7 +287,7 @@ namespace gaseous_server.Models
string sql = "";
// get platform data
IGDB.Models.Platform? platform = Platforms.GetPlatform(IGDBId);
IGDB.Models.Platform? platform = Platforms.GetPlatform(IGDBId, false);
if (platform != null)
{
@@ -369,12 +370,14 @@ namespace gaseous_server.Models
mapItem.IGDBName = platform.Name;
mapItem.IGDBSlug = platform.Slug;
mapItem.AlternateNames = alternateNames;
mapItem.Extensions = new PlatformMapItem.FileExtensions{
mapItem.Extensions = new PlatformMapItem.FileExtensions
{
SupportedFileExtensions = knownExtensions,
UniqueFileExtensions = uniqueExtensions
};
mapItem.RetroPieDirectoryName = (string)Common.ReturnValueIfNull(row["RetroPieDirectoryName"], "");
mapItem.WebEmulator = new PlatformMapItem.WebEmulatorItem{
mapItem.WebEmulator = new PlatformMapItem.WebEmulatorItem
{
Type = (string)Common.ReturnValueIfNull(row["WebEmulator_Type"], ""),
Core = (string)Common.ReturnValueIfNull(row["WebEmulator_Core"], ""),
AvailableWebEmulators = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PlatformMapItem.WebEmulatorItem.AvailableWebEmulatorItem>>((string)Common.ReturnValueIfNull(row["AvailableWebEmulators"], "[]"))