コード例 #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);
                }
            }
コード例 #2
0
        private async Task <object> HandleGetFiles(dynamic arg)
        {
            Utils.Log($"{DateTime.Now} - Mod Files - {arg.GameName} {arg.ModID}");
            var api = await NexusApiClient.Get(Request.Headers["apikey"].FirstOrDefault());

            return(api.GetModFiles(GameRegistry.GetByNexusName((string)arg.GameName).Game, (int)arg.ModID).ToJSON());
        }
コード例 #3
0
        public override async Task <JobResult> Execute(DBContext db, AppSettings settings)
        {
            using (var queue = new WorkQueue())
            {
                var updates = await db.NexusUpdates.AsQueryable().ToListAsync();

                var mods = updates
                           .Where(list => GamesToScan.Contains(GameRegistry.GetByNexusName(list.Game).Game))
                           .SelectMany(list =>
                                       list.Data.Where(mod => DateTime.UtcNow - mod.LatestFileUpdate.AsUnixTime() < TimeSpan.FromDays(1))
                                       .Select(mod => (list.Game, mod.ModId)));
                var mod_files = (await mods.PMap(queue, async mod =>
                {
                    var client = await NexusApiClient.Get();
                    try
                    {
                        var files = await client.GetModFiles(GameRegistry.GetByNexusName(mod.Game).Game,
                                                             (int)mod.ModId);
                        return(mod.Game, mod.ModId, files.files);
                    }
                    catch (Exception)
                    {
                        return(default);
コード例 #4
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();

                dynamic info;
                try
                {
                    info = await client.GetModInfo(game, general.modID);
                }
                catch (Exception)
                {
                    Utils.Error($"Error getting mod info for Nexus mod with {general.modID}");
                    throw;
                }
                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);
        }