11package otoroshi .next .plugins
22
33import akka .stream .Materializer
4+ import otoroshi .el .GlobalExpressionLanguage
45import otoroshi .env .Env
56import otoroshi .gateway .Errors
67import otoroshi .next .plugins .api ._
8+ import otoroshi .utils .TypedMap
79import otoroshi .utils .http .WSCookieWithSameSite
810import otoroshi .utils .syntax .implicits ._
911import play .api .libs .json ._
@@ -23,10 +25,10 @@ case class AdditionalCookieOutConfig(
2325 sameSite : Option [play.api.mvc.Cookie .SameSite ] = None
2426) extends NgPluginConfig {
2527 override def json : JsValue = AdditionalCookieOutConfig .format.writes(this )
26- def toCookie (implicit env : Env ): WSCookieWithSameSite = WSCookieWithSameSite (
27- name = name,
28- value = value,
29- domain = domain,
28+ def toCookie (attrs : TypedMap )( implicit env : Env ): WSCookieWithSameSite = WSCookieWithSameSite (
29+ name = GlobalExpressionLanguage .apply( name, attrs, env) ,
30+ value = GlobalExpressionLanguage .apply( value, attrs, env) ,
31+ domain = domain.map(v => GlobalExpressionLanguage .apply(v, attrs, env)) ,
3032 path = path,
3133 maxAge = maxAge,
3234 secure = secure,
@@ -106,9 +108,9 @@ case class AdditionalCookieInConfig(
106108 value : String
107109) extends NgPluginConfig {
108110 override def json : JsValue = AdditionalCookieInConfig .format.writes(this )
109- def toCookie (implicit env : Env ): WSCookieWithSameSite = WSCookieWithSameSite (
110- name = name,
111- value = value
111+ def toCookie (attrs : TypedMap )( implicit env : Env ): WSCookieWithSameSite = WSCookieWithSameSite (
112+ name = GlobalExpressionLanguage .apply( name, attrs, env) ,
113+ value = GlobalExpressionLanguage .apply( value, attrs, env)
112114 )
113115}
114116
@@ -169,7 +171,7 @@ class AdditionalCookieIn extends NgRequestTransformer {
169171 ctx.cachedConfig(internalName)(AdditionalCookieInConfig .format.reads).getOrElse(AdditionalCookieInConfig .default)
170172 Right (
171173 ctx.otoroshiRequest.copy(
172- cookies = ctx.otoroshiRequest.cookies :+ config.toCookie
174+ cookies = ctx.otoroshiRequest.cookies :+ config.toCookie(ctx.attrs)
173175 )
174176 ).vfuture
175177 }
@@ -202,7 +204,7 @@ class AdditionalCookieOut extends NgRequestTransformer {
202204 .getOrElse(AdditionalCookieOutConfig .default)
203205 Right (
204206 ctx.otoroshiResponse.copy(
205- cookies = ctx.otoroshiResponse.cookies :+ config.toCookie
207+ cookies = ctx.otoroshiResponse.cookies :+ config.toCookie(ctx.attrs)
206208 )
207209 ).vfuture
208210 }
@@ -328,7 +330,7 @@ class MissingCookieIn extends NgRequestTransformer {
328330 if (! ctx.otoroshiRequest.cookies.exists(_.name == config.name)) {
329331 Right (
330332 ctx.otoroshiRequest.copy(
331- cookies = ctx.otoroshiRequest.cookies :+ config.toCookie
333+ cookies = ctx.otoroshiRequest.cookies :+ config.toCookie(ctx.attrs)
332334 )
333335 ).vfuture
334336 } else {
@@ -365,7 +367,7 @@ class MissingCookieOut extends NgRequestTransformer {
365367 if (! ctx.otoroshiResponse.cookies.exists(_.name == config.name)) {
366368 Right (
367369 ctx.otoroshiResponse.copy(
368- cookies = ctx.otoroshiResponse.cookies :+ config.toCookie
370+ cookies = ctx.otoroshiResponse.cookies :+ config.toCookie(ctx.attrs)
369371 )
370372 ).vfuture
371373 } else {
0 commit comments