private PayloadFieldMaskingRule FindMatchingRule(string path)
 {
     return(FieldMaskingRules.Find(x =>
     {
         return new Regex("^" + x.Path.Replace("[", @"\[").Replace("]", @"\]") + "$", RegexOptions.IgnoreCase).IsMatch(path);
     }));
 }
Example #2
0
        public XmlPayloadMaskingRule(string field, Dictionary <string, string> namespaces = null, params PayloadFieldMaskingRule[] rules)
        {
            Field = field;
            FieldMaskingRules.AddRange(rules);

            if (namespaces != null && namespaces.Count > 0)
            {
                foreach (KeyValuePair <string, string> kvp in namespaces)
                {
                    _namespaces[kvp.Key] = kvp.Value;
                }
            }
        }
Example #3
0
        public override Payload Apply(Payload target)
        {
            var xml = target.GetString();

            _xmlDoc = new XmlDocument();
            _mgr    = new XmlNamespaceManager(_xmlDoc.NameTable);

            foreach (var kv in _namespaces)
            {
                _mgr.AddNamespace(kv.Key, kv.Value);
            }

            _xmlDoc.LoadXml(xml);

            FieldMaskingRules.ForEach(rule =>
            {
                if (rule != null)
                {
                    var nodes = GetNodes(rule.Path);
                    if (nodes != null && nodes.Count > 0)
                    {
                        foreach (XmlNode node in nodes)
                        {
                            var value  = node.Value.Trim();
                            node.Value = rule.Mask != null ? rule.Mask.Mask(value) : Masks.DefaultMask.Mask(value);
                        }
                    }
                }
            });

            using (var stringWriter = new StringWriter())
            {
                using (var xmlTextWriter = XmlWriter.Create(stringWriter))
                {
                    _xmlDoc.WriteTo(xmlTextWriter);
                    xmlTextWriter.Flush();
                    return(new Payload(stringWriter.GetStringBuilder().ToString()));
                }
            }
        }
 public JsonPayloadMaskingRule(string field, params PayloadFieldMaskingRule[] rules)
 {
     Field = field;
     FieldMaskingRules.AddRange(rules);
 }