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); } }
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()); }
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);
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); }