Skip to content

Commit

Permalink
refactor(routing-policy): [CHK-3671] change conditions from contains …
Browse files Browse the repository at this point in the history
…to startsWith to improve routing performance; add operationId to conditions to avoid potential ambiguity during routing;
  • Loading branch information
dylantangredi-bvt committed Feb 4, 2025
1 parent 41a0c86 commit 929527a
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,41 @@
<value>CHECKOUT</value>
</set-header>
<choose>
<when condition="@( context.Request.Url.Path.Contains("transactions") )">
<when condition="@(
(context.Request.Url.Path.StartsWith("/transactions")
|| context.Request.Url.Path.StartsWith("/v2/transactions")
|| context.Request.Url.Path.StartsWith("/v2.1/transactions"))
&& (context.Operation.Id.Equals("newTransaction")
|| context.Operation.Id.Equals("getTransactionInfo")
|| context.Operation.Id.Equals("requestTransactionUserCancellation")
|| context.Operation.Id.Equals("requestTransactionAuthorization")
|| context.Operation.Id.Equals("updateTransactionAuthorization")
|| context.Operation.Id.Equals("addUserReceipt"))
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-transactions-service")"/>
</when>
<when condition="@( context.Request.Url.Path.Contains("payment-methods") )">
<when condition="@(
(context.Request.Url.Path.StartsWith("/payment-methods")
|| context.Request.Url.Path.StartsWith("/v2/payment-methods"))
&& (context.Operation.Id.Equals("newPaymentMethod")
|| context.Operation.Id.Equals("getAllPaymentMethods")
|| context.Operation.Id.Equals("patchPaymentMethod")
|| context.Operation.Id.Equals("getPaymentMethod")
|| context.Operation.Id.Equals("createSession")
|| context.Operation.Id.Equals("calculateFees")
|| context.Operation.Id.Equals("getSessionPaymentMethod")
|| context.Operation.Id.Equals("updateSession")
|| context.Operation.Id.Equals("getTransactionIdForSession"))
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-payment-methods-service")"/>
</when>
<when condition="@( context.Request.Url.Path.Contains("payment-requests") || context.Request.Url.Path.Contains("carts") )"> <!-- TODO use startWith -->
<when condition="@(
(context.Request.Url.Path.StartsWith("/payment-requests")
|| context.Request.Url.Path.StartsWith("/carts"))
&& (context.Operation.Id.Equals("getPaymentRequestInfo")
|| context.Operation.Id.Equals("PostCarts")
|| context.Operation.Id.Equals("GetCarts"))
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-payment-requests-service")"/>
</when>
</choose>
Expand Down
47 changes: 40 additions & 7 deletions src/domains/ecommerce-app/api/ecommerce-io/v2/_base_policy.xml.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<rate-limit-by-key calls="150" renewal-period="10" counter-key="@(context.Request.Headers.GetValueOrDefault("X-Forwarded-For"))" />
<!-- fragment to read user id from session token jwt claims. it return userId as sessionTokenUserId variable taken from jwt claims. if the session token
is an opaque token a "session-token-not-found" string is returned-->
is an opaque token a "session-token-not-found" string is returned-->
<include-fragment fragment-id="pay-wallet-user-id-from-session-token" />
<!-- Session eCommerce START-->
<choose>
Expand All @@ -30,7 +30,7 @@
</set-header>
<!-- Headers settings required for backend service END -->
</when>
<when condition="@("PM".Equals("{{ecommerce-for-io-pm-npg-ff}}") || ("NPGFF".Equals("{{ecommerce-for-io-pm-npg-ff}}") && !"{{pay-wallet-family-friends-user-ids}}".Contains(((string)context.Variables["sessionTokenUserId"]))))">
<when condition="@("PM".Equals("{{ecommerce-for-io-pm-npg-ff}}") || ("NPGFF".Equals("{{ecommerce-for-io-pm-npg-ff}}") && !"{{pay-wallet-family-friends-user-ids}}".Contains(((string)context.Variables["sessionTokenUserId"]))))">

<!-- Check sessiontoken START-->
<set-variable name="sessionToken" value="@(context.Request.Headers.GetValueOrDefault("Authorization", "").Replace("Bearer ",""))" />
Expand Down Expand Up @@ -61,19 +61,52 @@

<set-variable name="blueDeploymentPrefix" value="@(context.Request.Headers.GetValueOrDefault("deployment","").Contains("blue")?"/beta":"")" />
<choose>
<when condition="@( context.Request.Url.Path.Contains("transactions") )">
<when condition="@(
(context.Request.Url.Path.StartsWith("/transactions")
|| context.Request.Url.Path.StartsWith("/v2/transactions")
|| context.Request.Url.Path.StartsWith("/v2.1/transactions"))
&& (context.Operation.Id.Equals("newTransaction")
|| context.Operation.Id.Equals("getTransactionInfo")
|| context.Operation.Id.Equals("requestTransactionUserCancellation")
|| context.Operation.Id.Equals("requestTransactionAuthorization")
|| context.Operation.Id.Equals("updateTransactionAuthorization")
|| context.Operation.Id.Equals("addUserReceipt"))
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-transactions-service")"/>
</when>
<when condition="@( context.Request.Url.Path.Contains("payment-methods") )">
<when condition="@(
(context.Request.Url.Path.StartsWith("/payment-methods")
|| context.Request.Url.Path.StartsWith("/v2/payment-methods"))
&& (context.Operation.Id.Equals("newPaymentMethod")
|| context.Operation.Id.Equals("getAllPaymentMethods")
|| context.Operation.Id.Equals("patchPaymentMethod")
|| context.Operation.Id.Equals("getPaymentMethod")
|| context.Operation.Id.Equals("createSession")
|| context.Operation.Id.Equals("calculateFees")
|| context.Operation.Id.Equals("getSessionPaymentMethod")
|| context.Operation.Id.Equals("updateSession")
|| context.Operation.Id.Equals("getTransactionIdForSession"))
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-payment-methods-service")"/>
</when>
<when condition="@( context.Request.Url.Path.Contains("payment-requests") )">
<when condition="@(
context.Request.Url.Path.StartsWith("/payment-requests")
&& context.Operation.Id.Equals("getPaymentRequestInfo")
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-payment-requests-service")"/>
</when>
<when condition="@( context.Request.Url.Path.Contains("user/lastPaymentMethodUsed") )">
<when condition="@(
context.Request.Url.Path.StartsWith("/user/lastPaymentMethodUsed")
&& (context.Operation.Id.Equals("saveLastPaymentMethodUsed")
|| context.Operation.Id.Equals("getLastPaymentMethodUsed"))
)">
<set-backend-service base-url="@("https://${ecommerce_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-ecommerce-user-stats-service")"/>
</when>
<when condition="@( context.Request.Url.Path.Contains("wallets") )">
<when condition="@(
context.Request.Url.Path.StartsWith("/wallets")
&& (context.Operation.Id.Equals("createWallet")
|| context.Operation.Id.Equals("getWalletsByIdUser"))
)">
<set-backend-service base-url="@("https://${wallet_ingress_hostname}"+context.Variables["blueDeploymentPrefix"]+"/pagopa-wallet-service")"/>
</when>
</choose>
Expand Down

0 comments on commit 929527a

Please sign in to comment.