예제 #1
0
            public override async Task <bool> Verify(Archive a)
            {
                try
                {
                    var gameMeta = GameRegistry.GetByMO2ArchiveName(GameName) ?? GameRegistry.GetByNexusName(GameName);
                    if (gameMeta == null)
                    {
                        return(false);
                    }

                    var game = gameMeta.Game;
                    if (!int.TryParse(ModID, out var modID))
                    {
                        return(false);
                    }

                    var client = await NexusApiClient.Get();

                    var modFiles = await client.GetModFiles(game, modID);

                    if (!ulong.TryParse(FileID, out var fileID))
                    {
                        return(false);
                    }

                    var found = modFiles.files
                                .FirstOrDefault(file => file.file_id == fileID && file.category_name != null);
                    return(found != null);
                }
                catch (Exception ex)
                {
                    Utils.Log($"{ModName} - {GameName} - {ModID} - {FileID} - Error getting Nexus download URL - {ex}");
                    return(false);
                }
            }
        public async Task <AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
        {
            var gameName = (string)archiveINI?.General?.gameName;
            var gameFile = (string)archiveINI?.General?.gameFile;

            if (gameFile == null || gameFile == null)
            {
                return(null);
            }

            var game = GameRegistry.GetByMO2ArchiveName(gameName);

            if (game == null)
            {
                return(null);
            }

            var path     = game.GameLocation();
            var filePath = Path.Combine(path, gameFile);

            if (!File.Exists(filePath))
            {
                return(null);
            }

            var hash = filePath.FileHashCached();

            return(new State
            {
                Game = GameRegistry.GetByMO2ArchiveName(gameName).Game,
                GameFile = gameFile,
                Hash = hash,
            });
        }
예제 #3
0
        public async Task <AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
        {
            var general = archiveINI?.General;

            if (general.modID != null && general.fileID != null && general.gameName != null)
            {
                var name     = (string)general.gameName;
                var gameMeta = GameRegistry.GetByMO2ArchiveName(name);
                var game     = gameMeta != null?GameRegistry.GetByMO2ArchiveName(name).Game : GameRegistry.GetByNexusName(name).Game;

                var client = await NexusApiClient.Get();

                var info = await client.GetModInfo(game, general.modID);

                return(new State
                {
                    GameName = general.gameName,
                    FileID = general.fileID,
                    ModID = general.modID,
                    Version = general.version ?? "0.0.0.0",
                    Author = info.author,
                    UploadedBy = info.uploaded_by,
                    UploaderProfile = info.uploaded_users_profile_url,
                    ModName = info.name,
                    SlideShowPic = info.picture_url,
                    NexusURL = NexusApiUtils.GetModURL(game, info.mod_id),
                    Summary = info.summary,
                    Adult = info.contains_adult_content
                });
            }

            return(null);
        }
예제 #4
0
 public static string ConvertGameName(string gameName)
 {
     if (Regex.IsMatch(gameName, @"^[^a-z\s]+\.[^a-z\s]+$"))
     {
         return(gameName);
     }
     return(GameRegistry.GetByMO2ArchiveName(gameName)?.NexusName ?? gameName.ToLower());
 }
예제 #5
0
 public static string ConvertGameName(string gameName)
 {
     return(GameRegistry.GetByMO2ArchiveName(gameName)?.NexusName ?? gameName.ToLower());
 }