diff --git a/http-service/src/main/java/net/runelite/http/service/item/ItemController.java b/http-service/src/main/java/net/runelite/http/service/item/ItemController.java index bb1faa3d70..a4906e3ffd 100644 --- a/http-service/src/main/java/net/runelite/http/service/item/ItemController.java +++ b/http-service/src/main/java/net/runelite/http/service/item/ItemController.java @@ -32,6 +32,7 @@ import com.google.common.hash.Hashing; import java.util.concurrent.TimeUnit; import net.runelite.http.api.item.ItemPrice; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.CacheControl; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -62,13 +63,18 @@ public class ItemController } private final ItemService itemService; + private final int priceCache; private final Supplier memoizedPrices; @Autowired - public ItemController(ItemService itemService) + public ItemController( + ItemService itemService, + @Value("${runelite.price.cache}") int priceCache + ) { this.itemService = itemService; + this.priceCache = priceCache; memoizedPrices = Suppliers.memoizeWithExpiration(() -> new MemoizedPrices(itemService.fetchPrices().stream() .map(priceEntry -> @@ -79,7 +85,7 @@ public class ItemController itemPrice.setPrice(priceEntry.getPrice()); return itemPrice; }) - .toArray(ItemPrice[]::new)), 30, TimeUnit.MINUTES); + .toArray(ItemPrice[]::new)), priceCache, TimeUnit.MINUTES); } @GetMapping("/prices") @@ -88,7 +94,7 @@ public class ItemController MemoizedPrices memorizedPrices = this.memoizedPrices.get(); return ResponseEntity.ok() .eTag(memorizedPrices.hash) - .cacheControl(CacheControl.maxAge(30, TimeUnit.MINUTES).cachePublic()) + .cacheControl(CacheControl.maxAge(priceCache, TimeUnit.MINUTES).cachePublic()) .body(memorizedPrices.prices); } } diff --git a/http-service/src/main/resources/application.yaml b/http-service/src/main/resources/application.yaml index 22dc39273a..93aba72ffc 100644 --- a/http-service/src/main/resources/application.yaml +++ b/http-service/src/main/resources/application.yaml @@ -47,3 +47,5 @@ runelite: wiki: poll.ms: 300000 # 5 minutes url: https://prices.runescape.wiki/osrs/latest + price: + cache: 30 # minutes