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) if (Config.MetadataConfiguration.SignatureSource == HasheousClient.Models.MetadataModel.SignatureSources.Hasheous)
{ {
HasheousClient.Hasheous hasheous = new HasheousClient.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, MD5 = hash.md5hash,
SHA1 = hash.sha1hash 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; 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) if (Id == 0)
{ {
@@ -21,18 +21,18 @@ namespace gaseous_server.Classes.Metadata
} }
else else
{ {
Task<PlatformVersion> RetVal = _GetPlatformVersion(SearchUsing.id, Id, ParentPlatform); Task<PlatformVersion> RetVal = _GetPlatformVersion(SearchUsing.id, Id, ParentPlatform, GetImages);
return RetVal.Result; 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; 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 // check database first
Storage.CacheStatus? cacheStatus = new Storage.CacheStatus(); Storage.CacheStatus? cacheStatus = new Storage.CacheStatus();
@@ -67,7 +67,7 @@ namespace gaseous_server.Classes.Metadata
if (returnValue != null) if (returnValue != null)
{ {
Storage.NewCacheValue(returnValue); Storage.NewCacheValue(returnValue);
UpdateSubClasses(ParentPlatform, returnValue); UpdateSubClasses(ParentPlatform, returnValue, GetImages);
} }
return returnValue; return returnValue;
case Storage.CacheStatus.Expired: case Storage.CacheStatus.Expired:
@@ -75,7 +75,7 @@ namespace gaseous_server.Classes.Metadata
{ {
returnValue = await GetObjectFromServer(WhereClause); returnValue = await GetObjectFromServer(WhereClause);
Storage.NewCacheValue(returnValue, true); Storage.NewCacheValue(returnValue, true);
UpdateSubClasses(ParentPlatform, returnValue); UpdateSubClasses(ParentPlatform, returnValue, GetImages);
} }
catch (Exception ex) 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) if (platformVersion.PlatformLogo != null)
{ {
@@ -104,6 +106,7 @@ namespace gaseous_server.Classes.Metadata
} }
} }
} }
}
private enum SearchUsing 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) if (Id == 0)
{ {
@@ -41,10 +41,10 @@ namespace gaseous_server.Classes.Metadata
{ {
try try
{ {
Task<Platform> RetVal = _GetPlatform(SearchUsing.id, Id, forceRefresh); Task<Platform> RetVal = _GetPlatform(SearchUsing.id, Id, forceRefresh, GetImages);
return RetVal.Result; return RetVal.Result;
} }
catch(Exception ex) catch (Exception ex)
{ {
Logging.Log(Logging.LogType.Warning, "Metadata", "An error occurred fetching Platform Id " + Id, ex); Logging.Log(Logging.LogType.Warning, "Metadata", "An error occurred fetching Platform Id " + Id, ex);
return null; return null;
@@ -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; 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 // check database first
Storage.CacheStatus? cacheStatus = new Storage.CacheStatus(); Storage.CacheStatus? cacheStatus = new Storage.CacheStatus();
@@ -96,7 +96,7 @@ namespace gaseous_server.Classes.Metadata
case Storage.CacheStatus.NotPresent: case Storage.CacheStatus.NotPresent:
returnValue = await GetObjectFromServer(WhereClause); returnValue = await GetObjectFromServer(WhereClause);
Storage.NewCacheValue(returnValue); Storage.NewCacheValue(returnValue);
UpdateSubClasses(returnValue); UpdateSubClasses(returnValue, GetImages);
AddPlatformMapping(returnValue); AddPlatformMapping(returnValue);
return returnValue; return returnValue;
case Storage.CacheStatus.Expired: case Storage.CacheStatus.Expired:
@@ -104,7 +104,7 @@ namespace gaseous_server.Classes.Metadata
{ {
returnValue = await GetObjectFromServer(WhereClause); returnValue = await GetObjectFromServer(WhereClause);
Storage.NewCacheValue(returnValue, true); Storage.NewCacheValue(returnValue, true);
UpdateSubClasses(returnValue); UpdateSubClasses(returnValue, GetImages);
AddPlatformMapping(returnValue); AddPlatformMapping(returnValue);
return 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) if (platform.Versions != null)
{ {
@@ -130,6 +130,8 @@ namespace gaseous_server.Classes.Metadata
} }
} }
if (GetImages == true)
{
if (platform.PlatformLogo != null) if (platform.PlatformLogo != null)
{ {
try try
@@ -142,6 +144,7 @@ namespace gaseous_server.Classes.Metadata
} }
} }
} }
}
private static void AddPlatformMapping(Platform platform) private static void AddPlatformMapping(Platform platform)
{ {
@@ -158,11 +161,12 @@ namespace gaseous_server.Classes.Metadata
{ {
Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + platform.Name + " from predefined data."); Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + platform.Name + " from predefined data.");
// doesn't exist - add it // doesn't exist - add it
item = new Models.PlatformMapping.PlatformMapItem{ item = new Models.PlatformMapping.PlatformMapItem
{
IGDBId = (long)platform.Id, IGDBId = (long)platform.Id,
IGDBName = platform.Name, IGDBName = platform.Name,
IGDBSlug = platform.Slug, IGDBSlug = platform.Slug,
AlternateNames = new List<string>{ platform.AlternativeName } AlternateNames = new List<string> { platform.AlternativeName }
}; };
Models.PlatformMapping.WritePlatformMap(item, false, true); Models.PlatformMapping.WritePlatformMap(item, false, true);
} }

View File

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