У меня есть следующие данные запроса
{
"id": "1115e297-12de-4189-8e11-75a8354f77d6",
"type": "transaction",
"version": "1.0.0",
"data": {
"account_id": "999",
"customer_info": {
"client_id": 999
},
"company_id": "999999",
"event": {
"id": 99999999,
"type_code": "3098"
}
}
}
Я хочу написать политику, которая игнорирует запрос, если типом не является «транзакция» и тип_кода «3098» или «3099»
Если это не выполняется, то он должен просто вернуть идентификатор запроса вызывающей стороне, а не пересылать запрос
Вот что я придумал
<choose>
<when condition="@((string)context.Request.Body?.As<JObject>(true)["type"] != "transaction")">
<return-response>
<set-status code="200" reason="OK" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@{
var json = new JObject(
new JProperty("id", context.Request.Body?.As<JObject>(true)["id"])
);
return json.ToString();
}</set-body>
</return-response>
</when>
<when condition="@(context.Request.Body?.As<JObject>(true)["data"] == null || context.Request.Body?.As<JObject>(true)["data"]["event"] == null)">
<return-response>
<set-status code="200" reason="OK" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@{
var json = new JObject(
new JProperty("id", context.Request.Body?.As<JObject>(true)["id"])
);
return json.ToString();
}</set-body>
</return-response>
</when>
<when condition="@((int)context.Request.Body?.As<JObject>(true)["data"]["event"]["type_code"] != 3098 && (int)context.Request.Body?.As<JObject>(true)["data"]["event"]["type_code"] != 3099)">
<return-response>
<set-status code="200" reason="OK" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@{
var json = new JObject(
new JProperty("id", context.Request.Body?.As<JObject>(true)["id"])
);
return json.ToString();
}</set-body>
</return-response>
</when>
</choose>
I чаевые есть гораздо более элегантный способ сделать это?