//(location[\s]+[\/\w]+[\s]+{[\s]+[\w\s_\/:;$\-".]+[\s]+}) public static List <NginxLocation> ParseLocation(string text) { var list = new List <NginxLocation>(); var regex = new Regex("(location[\\s]+[\\/\\w]+[\\s]+{[\\s]+[\\w\\s_\\/:;$\\-\".]+[\\s]+})"); var matches = regex.Matches(text); foreach (var match in matches) { var path = CaptureGroup(match.ToString(), "location[\\s]+[\\/\\w\\d]+[\\s]+{"); var autoindex = CaptureGroup(match.ToString(), "autoindex[\\s]+([\\w\\d]+);"); var root = CaptureGroup(match.ToString(), "root[\\s]+([\\w\\d\\/._-]+);"); var mp4 = CaptureGroup(match.ToString(), "mp4;"); var proxyPass = CaptureGroup(match.ToString(), "proxy_pass[\\s]+([\\w\\d\\/._\\-:]+);"); var proxysslsession = CaptureGroup(match.ToString(), "proxy_ssl_session_reuse[\\s]+([\\w\\d\\/._\\-:]+);"); var location = new NginxLocation { Path = path, Autoindex = autoindex, Root = root, Mp4 = !string.IsNullOrEmpty(mp4), ProxyPass = proxyPass, ProxySslSessionReuse = proxysslsession }; list.Add(location); } return(list); }
public void PropertiesHasNoLocations(NginxLocation location) { var r = location.Properties.Any(c => c.Key.Contains("location")); Assert.AreEqual(r, false); location.Locations.ForEach(PropertiesHasNoLocations); }
static NginxLocation ParseLocationToken(TokenEntry locationToken) { var location = new NginxLocation { Name = locationToken.Name.Replace("location ", "") }; location.ParseProperties(locationToken.Content); if (locationToken.Tokens.Any()) { location.Locations = locationToken.Tokens.Where(k => k.Name.Contains("location")).Select(ParseLocationToken).ToList(); location.LimitExcept = locationToken.Tokens.Where(k => k.Name.Contains("limit_except")).Select(ParseLimitExceptToken).FirstOrDefault(); } else { location.Locations = new List <NginxLocation>(); } return(location); }