Skip to content

Commit b6a8ffd

Browse files
authored
#12 Erroneously cached state (#13)
1 parent 033d396 commit b6a8ffd

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/main/scala/za/co/absa/statusboard/api/http/Endpoints.scala

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,34 @@ import za.co.absa.statusboard.model.{ErrorResponse, RawStatus, RefinedStatus, Se
2929
import za.co.absa.statusboard.model.ApiResponse.{MultiApiResponse, SingleApiResponse}
3030

3131
object Endpoints {
32+
implicit class NoCachePublicEndpoint[I, E, O, R](endpoint: PublicEndpoint[I, E, O, R]) {
33+
def noCache: PublicEndpoint[I, E, O, R] =
34+
endpoint
35+
.out(header("Cache-Control", "no-cache, no-store, must-revalidate"))
36+
.out(header("Pragma", "no-cache"))
37+
.out(header("Expires", "0"))
38+
}
39+
3240
val zioMetrics: PublicEndpoint[Unit, Unit, String, Any] = endpoint
3341
.get
3442
.in(ZioMetrics)
3543
.out(stringBody)
3644
.out(statusCode(StatusCode.Ok))
45+
.noCache
3746

3847
val health: PublicEndpoint[Unit, Unit, String, Any] = endpoint
3948
.get
4049
.in(Health)
4150
.out(stringBody)
4251
.out(statusCode(StatusCode.Ok))
52+
.noCache
4353

4454
val getServiceConfigurations: PublicEndpoint[Option[Boolean], ErrorResponse, MultiApiResponse[ServiceConfiguration], Any] = endpoint
4555
.get
4656
.in(Api / V1 / Configurations).in(query[Option[Boolean]](IncludeHidden))
4757
.out(jsonBody[MultiApiResponse[ServiceConfiguration]])
4858
.out(statusCode(StatusCode.Ok))
59+
.noCache
4960
.errorOut(
5061
oneOf[ErrorResponse](
5162
badRequest,
@@ -58,6 +69,7 @@ object Endpoints {
5869
.in(Api / V1 / Configurations / path[String](Environment) / path[String](ServiceName))
5970
.out(jsonBody[SingleApiResponse[ServiceConfiguration]])
6071
.out(statusCode(StatusCode.Ok))
72+
.noCache
6173
.errorOut(
6274
oneOf[ErrorResponse](
6375
badRequest,
@@ -71,6 +83,7 @@ object Endpoints {
7183
.in(Api / V1 / Configurations / path[String](Environment) / path[String](ServiceName) / Dependencies)
7284
.out(jsonBody[MultiApiResponse[ServiceConfigurationReference]])
7385
.out(statusCode(StatusCode.Ok))
86+
.noCache
7487
.errorOut(
7588
oneOf[ErrorResponse](
7689
badRequest,
@@ -84,6 +97,7 @@ object Endpoints {
8497
.in(Api / V1 / Configurations / path[String](Environment) / path[String](ServiceName) / Dependents)
8598
.out(jsonBody[MultiApiResponse[ServiceConfigurationReference]])
8699
.out(statusCode(StatusCode.Ok))
100+
.noCache
87101
.errorOut(
88102
oneOf[ErrorResponse](
89103
badRequest,
@@ -200,6 +214,7 @@ object Endpoints {
200214
.in(Api / V1 / Statuses / path[String](Environment) / path[String](ServiceName) / Latest)
201215
.out(jsonBody[SingleApiResponse[RefinedStatus]])
202216
.out(statusCode(StatusCode.Ok))
217+
.noCache
203218
.errorOut(
204219
oneOf[ErrorResponse](
205220
badRequest,
@@ -213,6 +228,7 @@ object Endpoints {
213228
.in(Api / V1 / Statuses / path[String](Environment) / path[String](ServiceName))
214229
.out(jsonBody[MultiApiResponse[RefinedStatus]])
215230
.out(statusCode(StatusCode.Ok))
231+
.noCache
216232
.errorOut(
217233
oneOf[ErrorResponse](
218234
badRequest,
@@ -225,6 +241,7 @@ object Endpoints {
225241
.in(Api / V1 / Statuses)
226242
.out(jsonBody[MultiApiResponse[RefinedStatus]])
227243
.out(statusCode(StatusCode.Ok))
244+
.noCache
228245
.errorOut(
229246
oneOf[ErrorResponse](
230247
badRequest,

0 commit comments

Comments
 (0)