コード例 #1
0
        private void LoadGitHubFiles()
        {
            var nsRepo              = "NeverSink-Filter";
            var nsName              = "NeverSinkDev";
            var seedFilterRepoPath  = "/ADDITIONAL-FILES/SeedFilter/NeverSink's filter - SEED (SeedFilter) .filter";
            var styleFolderRepoPath = "/ADDITIONAL-FILES/StyleSheets/";
            var repoDlPath          = new GitHubFileDownloader().Download(nsName, nsRepo);

            // seed filter
            var seedFilterContent = System.IO.File.ReadAllLines(repoDlPath + seedFilterRepoPath);

            this.SeedFilter = seedFilterContent.ToList();

            // filter styles
            System.IO.Directory
            .EnumerateFiles(repoDlPath + styleFolderRepoPath)
            .ToList()
            .ForEach(x => this.FilterStyleSheets.Add(System.IO.Path.GetFileName(x).Split(".").First(), System.IO.File.ReadAllLines(x).ToList()));
            FilterPublisher.DeleteDirectory(repoDlPath);

            // aspects
            var aspectFolder = new GitHubFileDownloader().Download(nsName, "Filter-ItemEconomyAspects");
            var aspectFiles  = System.IO.Directory.EnumerateFiles(aspectFolder).ToList();

            aspectFiles.ForEach(x => this.ItemAspects.Add(System.IO.Path.GetFileName(x).Split(".").First().ToLower(), System.IO.File.ReadAllLines(x).ToList()));
            FilterPublisher.DeleteDirectory(aspectFolder);
        }
コード例 #2
0
        public string Download(string user, string repo)
        {
            var client = new WebClient();

            var zipFile       = Path.GetTempPath() + "\\" + "tempRepoDownload" + user + "_" + repo + ".zip";
            var extractedPath = Path.GetTempPath() + "\\" + "tempRepoDownload" + user + "_" + repo + "_Unzipped";

            if (System.IO.File.Exists(zipFile))
            {
                System.IO.File.Delete(zipFile);
            }
            if (System.IO.Directory.Exists(extractedPath))
            {
                FilterPublisher.DeleteDirectory(extractedPath);
            }

            System.IO.Directory.CreateDirectory(extractedPath);

            Repository.Clone("https://github.com/NeverSinkDev/" + repo + ".git", extractedPath);
            // FilterPublisher.RunCommand(extractedPath, "git", "clone https://github.com/NeverSinkDev/" + repo + ".git");
            return(extractedPath);

            client.Headers.Add("user-agent", "Anything");
            client.DownloadFile("https://api.github.com/repos/" + user + "/" + repo + "/zipball", zipFile);

            System.IO.Compression.ZipFile.ExtractToDirectory(zipFile, extractedPath);
            System.IO.File.Delete(zipFile);
            extractedPath = System.IO.Directory.EnumerateDirectories(extractedPath).Single();

            return(extractedPath);
        }
コード例 #3
0
        public string Download(string user, string repo)
        {
            var zipFile       = Path.GetTempPath() + "\\" + "tempRepoDownload" + user + "_" + repo + ".zip";
            var extractedPath = Path.GetTempPath() + "\\" + "tempRepoDownload" + user + "_" + repo + "_Unzipped";

            if (System.IO.File.Exists(zipFile))
            {
                System.IO.File.Delete(zipFile);
            }
            if (System.IO.Directory.Exists(extractedPath))
            {
                FilterPublisher.DeleteDirectory(extractedPath);
            }

            System.IO.Directory.CreateDirectory(extractedPath);

            Repository.Clone("https://github.com/NeverSinkDev/" + repo + ".git", extractedPath);
            // FilterPublisher.RunCommand(extractedPath, "git", "clone https://github.com/NeverSinkDev/" + repo + ".git");

            return(extractedPath);
        }
コード例 #4
0
        public void Execute(string req, ILogger log)
        {
            // Logging?.Clean();
            Logging = LoggingFacade.GetInstance();
            Logging.SetCustomLoggingMessage((s) => log.LogInformation(s));

            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";
            dynamic data      = JsonConvert.DeserializeObject(req);

            string leagueType = data.leagueType ?? Environment.GetEnvironmentVariable("leagueType", EnvironmentVariableTarget.Process) ?? "tmpstandard";
            string repoName   = data.repoName ?? Environment.GetEnvironmentVariable("repoName", EnvironmentVariableTarget.Process) ?? "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;

            DataFiles = new DataFileRequestFacade();

            if (localMode == "true")
            {
                FilterPolishConfig.ActiveRequestMode = RequestType.Dynamic;
                DataFiles.BaseStoragePath            = @"C:\FilterOutput\EcoData";
            }
            else
            {
                FilterPolishConfig.ActiveRequestMode = RequestType.ForceOnline;
            }


            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 && EconomyData.IsLeagueActive())
            {
                // 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
            Publisher = new FilterPublisher(FilterAccessFacade.PrimaryFilter, repoName, leagueType);

            LoggingFacade.LogInfo($"[DEBUG] Initializing Publisher...");
            Publisher.Init(dataRes);

            LoggingFacade.LogInfo($"[DEBUG] LadderPublishing:");
            Publisher.PublishToLadder();

            LoggingFacade.LogInfo($"[DEBUG] GitHub:");
            Publisher.PublishToGitHub();

            LoggingFacade.LogInfo($"[DEBUG] FilterBlade:");
            Publisher.PublishToFilterBlade();

            LoggingFacade.LogInfo($"[DEBUG] FilterBlade Beta:");
            Publisher.PublishToFilterBladeBETA();
        }