예제 #1
0
        public IAppFileSystemLoader Init(int appId, string path, ILog log)
        {
            Log.LinkTo(log);
            ZoneMapper.Init(log);

            var wrapLog = Log.Call($"{appId}, {path}, ...");

            AppId = appId;
            try
            {
                Log.Add($"Trying to build path based on tenant. If it's in search mode, the {nameof(ITenant)} will be missing. Id: {Tenant.Id}");
                EnsureTenantIsLoadedWhenDiFails();
                var fullPath = Tenant.AppsRoot + "/" + path + "/" + Eav.Constants.FolderAppExtensions;
                Path = HostingEnvironment.MapPath(fullPath);
                Log.Add("System path:" + Path);
            }
            catch (Exception e)
            {
                // ignore
                wrapLog("error: " + e.Message);
                return(this);
            }

            wrapLog(null);
            return(this);
        }
예제 #2
0
        public IAppFileSystemLoader Init(int appId, string path, ILog log)
        {
            Log.LinkTo(log);
            ZoneMapper.Init(log);

            var wrapLog = Log.Call($"{appId}, {path}, ...");

            AppId = appId;
            try
            {
                Log.Add($"Trying to build path based on tenant. If it's in search mode, the {nameof(ISite)} will be missing. Id: {Site.Id}");
                EnsureSiteIsLoadedWhenDiFails();
                var fullPath = System.IO.Path.Combine(Site.AppsRootPhysicalFull, path, Eav.Constants.FolderAppExtensions);
                Path = fullPath;
                Log.Add("System path:" + Path);
            }
            catch (Exception e)
            {
                // ignore
                wrapLog("error: " + e.Message);
                return(this);
            }

            wrapLog(null);
            return(this);
        }
예제 #3
0
 private void EnsureTenantIsLoadedWhenDiFails()
 {
     if (Tenant.Id != Eav.Constants.NullId)
     {
         return;
     }
     Log.Add("TenantId not found. Must be in search mode, will try to find correct portalsettings");
     Tenant = ZoneMapper.TenantOfApp(AppId);
 }
예제 #4
0
        /// <summary>
        /// find the AppIdentity of an app which is referenced by a path
        /// </summary>
        /// <param name="appPath"></param>
        /// <returns></returns>
        internal IAppIdentity GetCurrentAppIdFromPath(string appPath)
        {
            var wrapLog = Log.Call(appPath);
            // check zone
            var zid = ZoneMapper.GetZoneId(Portal.PortalId);

            // get app from appname
            var aid = AppHelpers.GetAppIdFromGuidName(zid, appPath, true);

            wrapLog($"found app:{aid}");
            return(new AppIdentity(zid, aid));
        }
예제 #5
0
 public ZoneDAOImp()
 {
     mapper = new ZoneMapper();
 }
예제 #6
0
        public static async Task <ParsedKillMail> ParseKillmail(string input)
        {
            // Remove special formatting
            var lines = input.Split(new [] { '\r', '\n' });

            if (lines.Any() && lines.FirstOrDefault().Contains("```"))
            {
                input = string.Join("\n", lines.Skip(1));
            }
            input = input.Replace("**", "");

            var   extractedKillmail = new ParsedKillMail();
            Match killmailMatch     = Regex.Match(input, Pattern);

            if (killmailMatch.Success)
            {
                foreach (Group group in killmailMatch.Groups.Where(x => x.Success))
                {
                    switch (group.Name)
                    {
                    case "datetime":
                        extractedKillmail.KilledAt = group.Value.Trim();
                        break;

                    case "victimName":
                        extractedKillmail.VictimName = group.Value.Trim();
                        break;

                    case "attackerName":
                        extractedKillmail.AttackerName = group.Value.Trim();
                        break;

                    case "zone":
                        extractedKillmail.Zone = ZoneMapper.fullZoneName(group.Value.Trim());
                        break;

                    case "killingBlow":
                        if (int.TryParse(group.Value.Trim(), out var killingBlow))
                        {
                            extractedKillmail.KillingBlow = killingBlow;
                        }
                        break;

                    case "overDamage":
                        if (int.TryParse(group.Value.Trim(), out var overDamage))
                        {
                            extractedKillmail.OverDamage = overDamage;
                        }
                        break;

                    case "involvedText":
                        await ParseInvolved(extractedKillmail, group.Value);

                        break;

                    default:
                        break;
                    }
                }


                // Get level and class and guild for each char
                var victimScraper   = new CharBrowserScraper(extractedKillmail.VictimName);
                var attackerScraper = new CharBrowserScraper(extractedKillmail.AttackerName);
                await victimScraper.Fetch();

                await attackerScraper.Fetch();

                extractedKillmail.AttackerGuild = attackerScraper.Guild;
                extractedKillmail.AttackerLevel = attackerScraper.Level;
                extractedKillmail.AttackerClass = attackerScraper.Class;
                extractedKillmail.AttackerIsNpc = attackerScraper.IsNpc;
                extractedKillmail.VictimGuild   = victimScraper.Guild;
                extractedKillmail.VictimLevel   = victimScraper.Level;
                extractedKillmail.VictimClass   = victimScraper.Class;
                extractedKillmail.VictimIsNpc   = victimScraper.IsNpc;
            }
            else
            {
                return(null);
            }

            return(extractedKillmail);
        }