private static byte[] addConditionsToPolicy(string policy, Dictionary<string, string> newConditions)
{
var json = JsonMapper.ToObject(new JsonReader(policy));
var jsonConditions = json["conditions"];
if (jsonConditions != null && jsonConditions.IsArray)
{
foreach (var newCond in newConditions)
{
bool found = false;
for (int i = 0; i < jsonConditions.Count; i++)
{
JsonData jsonCond = jsonConditions[i];
if (jsonCond.IsObject && jsonCond[newCond.Key] != null)
{
jsonCond[newCond.Key] = newCond.Value;
found = true;
}
}
if (!found)
{
var jsonCond = new JsonData();
jsonCond.SetJsonType(JsonType.Object);
jsonCond[newCond.Key] = newCond.Value;
jsonConditions.Add(jsonCond);
}
}
}
return Encoding.UTF8.GetBytes(JsonMapper.ToJson(json).Trim());
}