Added Cache-Control rules for existing APIs.
This commit is contained in:
parent
d15e074674
commit
4b4ae1c820
4 changed files with 17 additions and 7 deletions
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
20250411.1
|
20250412
|
||||||
|
|
|
@ -51,11 +51,13 @@ final class ColoursApiRoutes implements RouteHandler {
|
||||||
/** @return int|mixed[] */
|
/** @return int|mixed[] */
|
||||||
#[AccessControl]
|
#[AccessControl]
|
||||||
#[ExactRoute('GET', '/api/v1/colours/presets')]
|
#[ExactRoute('GET', '/api/v1/colours/presets')]
|
||||||
public function getPresets(HttpRequest $request): array|int {
|
public function getPresets(HttpResponseBuilder $response, HttpRequest $request): array|int {
|
||||||
$transformer = $this->createPresetTransformer();
|
$transformer = $this->createPresetTransformer();
|
||||||
if(!$transformer->filter($request))
|
if(!$transformer->filter($request))
|
||||||
return 400;
|
return 400;
|
||||||
|
|
||||||
|
$response->setCacheControl('max-age=3600', 'stale-if-error=86400', 'public', 'immutable');
|
||||||
|
|
||||||
return XArray::select(
|
return XArray::select(
|
||||||
$this->coloursCtx->presets->getPresets(),
|
$this->coloursCtx->presets->getPresets(),
|
||||||
fn($preset) => $transformer->convert($preset),
|
fn($preset) => $transformer->convert($preset),
|
||||||
|
@ -65,7 +67,7 @@ final class ColoursApiRoutes implements RouteHandler {
|
||||||
/** @return int|mixed[] */
|
/** @return int|mixed[] */
|
||||||
#[AccessControl]
|
#[AccessControl]
|
||||||
#[PatternRoute('GET', '/api/v1/colours/presets/([A-Za-z0-9\-_]+)')]
|
#[PatternRoute('GET', '/api/v1/colours/presets/([A-Za-z0-9\-_]+)')]
|
||||||
public function getPreset(HttpRequest $request, string $name): array|int {
|
public function getPreset(HttpResponseBuilder $response, HttpRequest $request, string $name): array|int {
|
||||||
if(empty($name))
|
if(empty($name))
|
||||||
return 404;
|
return 404;
|
||||||
|
|
||||||
|
@ -73,6 +75,8 @@ final class ColoursApiRoutes implements RouteHandler {
|
||||||
if(!$transformer->filter($request))
|
if(!$transformer->filter($request))
|
||||||
return 400;
|
return 400;
|
||||||
|
|
||||||
|
$response->setCacheControl('max-age=3600', 'stale-if-error=86400', 'public', 'immutable');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$preset = $this->coloursCtx->presets->getPreset(
|
$preset = $this->coloursCtx->presets->getPreset(
|
||||||
$name,
|
$name,
|
||||||
|
|
|
@ -48,11 +48,13 @@ final class EmotesApiRoutes implements RouteHandler {
|
||||||
/** @return int|mixed[] */
|
/** @return int|mixed[] */
|
||||||
#[AccessControl]
|
#[AccessControl]
|
||||||
#[ExactRoute('GET', '/api/v1/emotes')]
|
#[ExactRoute('GET', '/api/v1/emotes')]
|
||||||
public function getEmotes(HttpRequest $request): array|int {
|
public function getEmotes(HttpResponseBuilder $response, HttpRequest $request): array|int {
|
||||||
$transformer = $this->createEmoteTransformer();
|
$transformer = $this->createEmoteTransformer();
|
||||||
if(!$transformer->filter($request))
|
if(!$transformer->filter($request))
|
||||||
return 400;
|
return 400;
|
||||||
|
|
||||||
|
$response->setCacheControl('max-age=3600', 'stale-if-error=86400', 'public', 'immutable');
|
||||||
|
|
||||||
return XArray::select(
|
return XArray::select(
|
||||||
$this->emotesCtx->emotes->getEmotes(orderBy: 'order'),
|
$this->emotesCtx->emotes->getEmotes(orderBy: 'order'),
|
||||||
fn($emote) => $transformer->convert($emote),
|
fn($emote) => $transformer->convert($emote),
|
||||||
|
@ -62,7 +64,7 @@ final class EmotesApiRoutes implements RouteHandler {
|
||||||
/** @return int|mixed[] */
|
/** @return int|mixed[] */
|
||||||
#[AccessControl]
|
#[AccessControl]
|
||||||
#[PatternRoute('GET', '/api/v1/emotes/([0-9]+)')]
|
#[PatternRoute('GET', '/api/v1/emotes/([0-9]+)')]
|
||||||
public function getEmote(HttpRequest $request, string $id): array|int {
|
public function getEmote(HttpResponseBuilder $response, HttpRequest $request, string $id): array|int {
|
||||||
if(empty($id))
|
if(empty($id))
|
||||||
return 404;
|
return 404;
|
||||||
|
|
||||||
|
@ -76,6 +78,8 @@ final class EmotesApiRoutes implements RouteHandler {
|
||||||
return 404;
|
return 404;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$response->setCacheControl('max-age=3600', 'stale-if-error=86400', 'public', 'immutable');
|
||||||
|
|
||||||
return $transformer->convert($emote);
|
return $transformer->convert($emote);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +99,7 @@ final class EmotesApiRoutes implements RouteHandler {
|
||||||
/** @return int|mixed[] */
|
/** @return int|mixed[] */
|
||||||
#[AccessControl]
|
#[AccessControl]
|
||||||
#[PatternRoute('GET', '/api/v1/emotes/([0-9]+)/strings')]
|
#[PatternRoute('GET', '/api/v1/emotes/([0-9]+)/strings')]
|
||||||
public function getEmoteStrings(HttpRequest $request, string $id): array|int {
|
public function getEmoteStrings(HttpResponseBuilder $response, HttpRequest $request, string $id): array|int {
|
||||||
if(empty($id))
|
if(empty($id))
|
||||||
return 404;
|
return 404;
|
||||||
|
|
||||||
|
@ -109,6 +113,8 @@ final class EmotesApiRoutes implements RouteHandler {
|
||||||
return 404;
|
return 404;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$response->setCacheControl('max-age=3600', 'stale-if-error=86400', 'public', 'immutable');
|
||||||
|
|
||||||
return XArray::select(
|
return XArray::select(
|
||||||
$this->emotesCtx->emotes->getEmoteStrings($emote),
|
$this->emotesCtx->emotes->getEmoteStrings($emote),
|
||||||
fn($emote) => $transformer->convert($emote),
|
fn($emote) => $transformer->convert($emote),
|
||||||
|
|
|
@ -132,7 +132,7 @@ final class UsersApiRoutes implements RouteHandler {
|
||||||
#[Before('authz:bearer', required: false)]
|
#[Before('authz:bearer', required: false)]
|
||||||
#[Before('authz:misuzu', required: false)]
|
#[Before('authz:misuzu', required: false)]
|
||||||
public function getMe(HttpResponseBuilder $response, HttpRequest $request): int|array {
|
public function getMe(HttpResponseBuilder $response, HttpRequest $request): int|array {
|
||||||
$response->setHeader('Cache-Control', 'no-store');
|
$response->setCacheControl('no-store');
|
||||||
|
|
||||||
$openid = $this->authInfo->hasScope('openid');
|
$openid = $this->authInfo->hasScope('openid');
|
||||||
if(!$openid
|
if(!$openid
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue