membership-attribute-service/app/filters/CheckCacheHeadersFilter.scala (19 lines of code) (raw):

package filters import org.apache.pekko.stream.Materializer import controllers.Cached.suitableForCaching import play.api.mvc._ import scala.concurrent.{ExecutionContext, Future} class CheckCacheHeadersFilter(implicit val mat: Materializer, ex: ExecutionContext) extends Filter { def apply(nextFilter: RequestHeader => Future[Result])(requestHeader: RequestHeader): Future[Result] = { nextFilter(requestHeader).map { result => if (requestHeader.method.toUpperCase != "OPTIONS" && suitableForCaching(result)) { val hasCacheControl = result.header.headers.contains("Cache-Control") assert( hasCacheControl, s"Cache-Control not set. Ensure controller response has Cache-Control header set for ${requestHeader.path}. Throwing exception... ", ) } result } } }