public void Run(FileRequestResult dataRes) { if (dataRes != FileRequestResult.Success) { PublishPrice = false; } var filterOutFolder = Path.GetTempPath() + "filterGenerationResult"; var repoFolder = filterOutFolder + "\\" + RepoName; LoggingFacade.LogInfo($"Tempfolder prepared"); if (!Directory.Exists(filterOutFolder)) { Directory.CreateDirectory(filterOutFolder); } // clone/pull the repo. after that, we will edit these existing files by generating the new versions // and push the update as the actual small changes. if (Directory.Exists(repoFolder)) { LoggingFacade.LogInfo($"Repo folder existing... pulling"); RunCommand(filterOutFolder, "git", "branch --set-upstream-to=origin/master master"); using (var repo = new Repository(repoFolder)) { var options = new PullOptions(); var author = Environment.GetEnvironmentVariable("author", EnvironmentVariableTarget.Process) ?? "FilterPolishZ"; var email = Environment.GetEnvironmentVariable("email", EnvironmentVariableTarget.Process) ?? "FilterPolishZ"; Commands.Pull(repo, new Signature(author, email, DateTimeOffset.Now), options); LoggingFacade.LogInfo($"Pulling done"); } } else { LoggingFacade.LogInfo($"Repo folder not existing... cloning"); Repository.Clone("https://github.com/NeverSinkDev/" + RepoName + ".git", repoFolder); LoggingFacade.LogInfo($"Cloning done!"); } // create filter LoggingFacade.LogInfo($"Performing filter generation operations"); FilterWriter.WriteFilter(this.Filter, true, repoFolder + "\\", Path.GetDirectoryName(GenerateFilters.DataFiles.FilterStyleFilesPaths.First().Value) + "\\"); LoggingFacade.LogInfo($"Performing filter generation operations: DONE"); LoggingFacade.LogInfo($"Starting publishing!"); PushToFTP("www", repoFolder, "NeverSink_AutoEcoUpdate_" + GenerateFilters.DataFiles.LeagueType); LoggingFacade.LogInfo($"Publishing to filterblade: done"); PushToFTP("beta", repoFolder, "NeverSink_AutoEcoUpdate_" + GenerateFilters.DataFiles.LeagueType); LoggingFacade.LogInfo($"Publishing to filterblade-beta: done"); PushToGit(repoFolder, PublishPrice); LoggingFacade.LogInfo($"Publishing to GitHub: done"); UploadToPoe(repoFolder); LoggingFacade.LogInfo($"PoeUpload: done"); // no cleanUp -> we keep this folder here and just pull/push whenever we generate new filters }
public void Init(FileRequestResult dataRes) { if (dataRes != FileRequestResult.Success) { PublishPrice = false; } var filterOutFolder = Path.GetTempPath() + "filterGenerationResult"; var repoFolder = filterOutFolder + "\\" + RepoName; this.RepoFolder = repoFolder; LoggingFacade.LogInfo($"Tempfolder prepared"); if (!Directory.Exists(filterOutFolder)) { Directory.CreateDirectory(filterOutFolder); } // clone/pull the repo. after that, we will edit these existing files by generating the new versions // and push the update as the actual small changes. if (Directory.Exists(repoFolder)) { LoggingFacade.LogInfo($"Repo folder existing... renewing"); DeleteDirectory(repoFolder); // RunCommand(filterOutFolder, "git", "branch --set-upstream-to=origin/master master"); // using (var repo = new Repository(repoFolder)) // { // var options = new PullOptions(); // var author = Environment.GetEnvironmentVariable("author", EnvironmentVariableTarget.Process) ?? "FilterPolishZ"; // var email = Environment.GetEnvironmentVariable("email", EnvironmentVariableTarget.Process) ?? "FilterPolishZ"; // Commands.Pull(repo, new Signature(author, email, DateTimeOffset.Now), options); // LoggingFacade.LogInfo($"Pulling done"); // } } { LoggingFacade.LogInfo($"Repo folder not existing... cloning"); Repository.Clone("https://github.com/NeverSinkDev/" + RepoName + ".git", repoFolder); LoggingFacade.LogInfo($"Cloning done!"); } // create filter LoggingFacade.LogInfo($"Performing filter generation operations"); var filterWriter = FilterWriter.WriteFilter(this.Filter, true, repoFolder + "\\", Path.GetDirectoryName(MainGenerationRoutine.DataFiles.FilterStyleFilesPaths.First().Value) + "\\"); filterWriter.Wait(); LoggingFacade.LogInfo($"Performing filter generation operations: DONE"); LoggingFacade.LogInfo($"Repofolder is: {RepoFolder}"); }
void OnRequestFileResponse(int requestId) { if (!_requests.TryGetValue(requestId, out RequestData request)) { return; } var result = new FileRequestResult(_buffer.ReadByte() != 0); if (result.Succeeded) { result.Size = _buffer.ReadInt64(); result.LastWriteTimeUtc = new DateTime(_buffer.ReadInt64(), DateTimeKind.Utc); result.Crc = (uint)_buffer.ReadInt32(); } request.Complete(result); }
public static void PerformMainRoutine(string req) { // 0) Cleanup EconomyData?.Clean(); ItemInfoData?.Clean(); TierListFacade?.Clean(); FilterAccessFacade?.Clean(); BaseTypeDataProvider.Initialize(); EconomyData = EconomyRequestFacade.GetInstance(); TierListFacade = TierListFacade.GetInstance(); FilterAccessFacade = FilterAccessFacade.GetInstance(); ItemInfoData = ItemInformationFacade.GetInstance(); // 0) Get Current League information etc EconomyData.RequestPoeLeagueInfo(); if (!EconomyData.IsLeagueActive()) { LoggingFacade.LogWarning("No Active League detected!"); } var requestedLeagueName = EconomyData.GetActiveLeagueName(); // 1) Acquire Data var localMode = Environment.GetEnvironmentVariable("localMode", EnvironmentVariableTarget.Process) ?? "true"; // string body = new StreamReader(req.Body).ReadToEnd(); // var repoName = GetReqParams(req, data, "repoName", "NeverSink-EconomyUpdated-Filter"); // var leagueType = GetReqParams(req, data.leagueType, "leagueType", "tmpstandard"); dynamic data = JsonConvert.DeserializeObject(req); string leagueType = data.leagueType ?? "tmpstandard"; string repoName = data.repoName ?? "NeverSink-EconomyUpdated-Filter"; string league = requestedLeagueName; //GetReqParams(req, data, "currentLeague", "Metamorph"); LoggingFacade.LogInfo($"[CONFIG] leagueType: {leagueType}"); LoggingFacade.LogInfo($"[CONFIG] league: {league}"); LoggingFacade.LogInfo($"[CONFIG] repoName: {repoName}"); LoggingFacade.LogInfo($"[CONFIG] localMode: {localMode}"); FilterPolishConfig.ApplicationExecutionMode = ExecutionMode.Function; if (localMode == "true") { FilterPolishConfig.ActiveRequestMode = RequestType.Dynamic; } else { FilterPolishConfig.ActiveRequestMode = RequestType.ForceOnline; } DataFiles = new DataFileRequestFacade(); LoggingFacade.LogInfo($"[CONFIG] FileRequestFacade Created!"); FileRequestResult dataRes = DataFiles.GetAllFiles(league, leagueType); // 3) Parse filter FilterAccessFacade.PrimaryFilter = new Filter(DataFiles.SeedFilter); var newVersion = FilterAccessFacade.PrimaryFilter.GetHeaderMetaData("VERSION") + "." + DateTime.Now.Year + "." + DateTime.Now.DayOfYear + "." + DateTime.Now.Hour; FilterAccessFacade.PrimaryFilter.SetHeaderMetaData("VERSION", newVersion); LoggingFacade.LogInfo($"[CONFIG] version: {newVersion}"); LoggingFacade.LogInfo($"[DEBUG] FileRequestResult: {dataRes.ToString()}"); LoggingFacade.LogInfo($"[DEBUG] League Active: {EconomyData.IsLeagueActive().ToString()}"); // null check the ecoData in case of disabled/early leagues if (dataRes == FileRequestResult.Success) { // 4) Load tier list information and enrichment procedures var tiers = FilterAccessFacade.PrimaryFilter.ExtractTiers(FilterPolishConfig.FilterTierLists); TierListFacade.TierListData = tiers; EconomyData.CreateSubEconomyTiers(); ConcreteEnrichmentProcedures.Initialize(); EconomyData.EnrichAll(EnrichmentProcedureConfiguration.PriorityEnrichmentProcedures); FilterPolishUtil.FilterPolishConfig.AdjustPricingInformation(); EconomyData.EnrichAll(EnrichmentProcedureConfiguration.EnrichmentProcedures); // EconomyData.PerformClassAbstractionProcedures(); TierListFacade.TierListData.Values.ToList().ForEach(x => x.ReEvaluate()); // 5) Generate Suggestions var economyTieringSystem = new ConcreteEconomyRules(); economyTieringSystem.GenerateSuggestions(); // 6) Apply suggestions TierListFacade.ApplyAllSuggestions(); } // 7) Generate changelogs // todo LoggingFacade.LogInfo($"[DEBUG] Seedfiler regeneration done. Starting publishing..."); // 8) Generate and Upload Filters new FilterPublisher(FilterAccessFacade.PrimaryFilter, repoName, leagueType).Run(dataRes); }