Added a try/catch block when unzipping files to ensure errors are properly logged, and temp files are cleaned up (#165)
This commit is contained in:
@@ -154,35 +154,42 @@ namespace gaseous_server.Classes
|
|||||||
// extract the zip file and search the contents
|
// extract the zip file and search the contents
|
||||||
string ExtractPath = Path.Combine(Config.LibraryConfiguration.LibraryTempDirectory, Path.GetRandomFileName());
|
string ExtractPath = Path.Combine(Config.LibraryConfiguration.LibraryTempDirectory, Path.GetRandomFileName());
|
||||||
if (!Directory.Exists(ExtractPath)) { Directory.CreateDirectory(ExtractPath); }
|
if (!Directory.Exists(ExtractPath)) { Directory.CreateDirectory(ExtractPath); }
|
||||||
ZipFile.ExtractToDirectory(GameFileImportPath, ExtractPath);
|
try
|
||||||
|
|
||||||
// loop through contents until we find the first signature match
|
|
||||||
foreach (string file in Directory.GetFiles(ExtractPath))
|
|
||||||
{
|
{
|
||||||
FileInfo zfi = new FileInfo(file);
|
ZipFile.ExtractToDirectory(GameFileImportPath, ExtractPath);
|
||||||
Common.hashObject zhash = new Common.hashObject(file);
|
|
||||||
|
|
||||||
Models.Signatures_Games zDiscoveredSignature = _GetFileSignature(zhash, zfi, file);
|
// loop through contents until we find the first signature match
|
||||||
zDiscoveredSignature.Rom.Name = Path.ChangeExtension(zDiscoveredSignature.Rom.Name, ".zip");
|
foreach (string file in Directory.GetFiles(ExtractPath))
|
||||||
|
|
||||||
if (zDiscoveredSignature.Score > discoveredSignature.Score)
|
|
||||||
{
|
{
|
||||||
if (
|
FileInfo zfi = new FileInfo(file);
|
||||||
zDiscoveredSignature.Rom.SignatureSource == gaseous_signature_parser.models.RomSignatureObject.RomSignatureObject.Game.Rom.SignatureSourceType.MAMEArcade ||
|
Common.hashObject zhash = new Common.hashObject(file);
|
||||||
zDiscoveredSignature.Rom.SignatureSource == gaseous_signature_parser.models.RomSignatureObject.RomSignatureObject.Game.Rom.SignatureSourceType.MAMEMess
|
|
||||||
)
|
|
||||||
{
|
|
||||||
zDiscoveredSignature.Rom.Name = zDiscoveredSignature.Game.Description + ".zip";
|
|
||||||
}
|
|
||||||
zDiscoveredSignature.Rom.Crc = discoveredSignature.Rom.Crc;
|
|
||||||
zDiscoveredSignature.Rom.Md5 = discoveredSignature.Rom.Md5;
|
|
||||||
zDiscoveredSignature.Rom.Sha1 = discoveredSignature.Rom.Sha1;
|
|
||||||
zDiscoveredSignature.Rom.Size = discoveredSignature.Rom.Size;
|
|
||||||
discoveredSignature = zDiscoveredSignature;
|
|
||||||
|
|
||||||
break;
|
Models.Signatures_Games zDiscoveredSignature = _GetFileSignature(zhash, zfi, file);
|
||||||
|
zDiscoveredSignature.Rom.Name = Path.ChangeExtension(zDiscoveredSignature.Rom.Name, ".zip");
|
||||||
|
|
||||||
|
if (zDiscoveredSignature.Score > discoveredSignature.Score)
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
zDiscoveredSignature.Rom.SignatureSource == gaseous_signature_parser.models.RomSignatureObject.RomSignatureObject.Game.Rom.SignatureSourceType.MAMEArcade ||
|
||||||
|
zDiscoveredSignature.Rom.SignatureSource == gaseous_signature_parser.models.RomSignatureObject.RomSignatureObject.Game.Rom.SignatureSourceType.MAMEMess
|
||||||
|
)
|
||||||
|
{
|
||||||
|
zDiscoveredSignature.Rom.Name = zDiscoveredSignature.Game.Description + ".zip";
|
||||||
|
}
|
||||||
|
zDiscoveredSignature.Rom.Crc = discoveredSignature.Rom.Crc;
|
||||||
|
zDiscoveredSignature.Rom.Md5 = discoveredSignature.Rom.Md5;
|
||||||
|
zDiscoveredSignature.Rom.Sha1 = discoveredSignature.Rom.Sha1;
|
||||||
|
zDiscoveredSignature.Rom.Size = discoveredSignature.Rom.Size;
|
||||||
|
discoveredSignature = zDiscoveredSignature;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.Log(Logging.LogType.Critical, "Get Signature", "Error processing zip file: " + GameFileImportPath, ex);
|
||||||
|
}
|
||||||
|
|
||||||
if (Directory.Exists(ExtractPath)) { Directory.Delete(ExtractPath, true); }
|
if (Directory.Exists(ExtractPath)) { Directory.Delete(ExtractPath, true); }
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user