Simplify error messages.

This commit is contained in:
flash 2025-01-03 22:46:13 +00:00
parent 1bcd3ad9f0
commit 23cdbe59a0
3 changed files with 18 additions and 25 deletions

View file

@ -0,0 +1,10 @@
<?php
namespace EEPROM;
use Index\Http\{HttpErrorHandler,HttpResponseBuilder,HttpRequest};
class EEPROMErrorHandler implements HttpErrorHandler {
public function handle(HttpResponseBuilder $response, HttpRequest $request, int $code, string $message): void {
$response->setContent(sprintf('<!doctype html><title>%1$03d %2$s</title><strong>%1$03d %2$s</strong>', $code, $message));
}
}

View file

@ -9,7 +9,9 @@ class RoutingContext {
private HttpRouter $router; private HttpRouter $router;
public function __construct(private Config $config) { public function __construct(private Config $config) {
$this->router = new HttpRouter; $this->router = new HttpRouter(
errorHandler: new EEPROMErrorHandler,
);
$this->router->use('/', $this->middleware(...)); $this->router->use('/', $this->middleware(...));
} }

View file

@ -53,10 +53,8 @@ class UploadsRoutes implements RouteHandler {
$uploadId = $this->uploadsCtx->uploads->resolveLegacyId($uploadId) ?? $uploadId; $uploadId = $this->uploadsCtx->uploads->resolveLegacyId($uploadId) ?? $uploadId;
$uploadSecret = null; $uploadSecret = null;
} else { } else {
if(strlen($uploadId) < 5) { if(strlen($uploadId) < 5)
$response->setContent('File not found.');
return 404; return 404;
}
$uploadSecret = substr($uploadId, -4); $uploadSecret = substr($uploadId, -4);
$uploadId = XNumber::fromBase62(substr($uploadId, 0, -4)); $uploadId = XNumber::fromBase62(substr($uploadId, 0, -4));
@ -65,17 +63,14 @@ class UploadsRoutes implements RouteHandler {
try { try {
$uploadInfo = $this->uploadsCtx->uploads->getUpload(uploadId: $uploadId, secret: $uploadSecret); $uploadInfo = $this->uploadsCtx->uploads->getUpload(uploadId: $uploadId, secret: $uploadSecret);
} catch(RuntimeException $ex) { } catch(RuntimeException $ex) {
$response->setContent('File not found.');
return 404; return 404;
} }
try { try {
$variantInfo = $this->uploadsCtx->uploads->getUploadVariant($uploadInfo, $uploadVariant); $variantInfo = $this->uploadsCtx->uploads->getUploadVariant($uploadInfo, $uploadVariant);
} catch(RuntimeException $ex) { } catch(RuntimeException $ex) {
if($isOriginal) { if($isOriginal)
$response->setContent('Data is missing.');
return 404; return 404;
}
try { try {
$poolInfo = $this->poolsCtx->pools->getPool($uploadInfo->poolId); $poolInfo = $this->poolsCtx->pools->getPool($uploadInfo->poolId);
@ -94,15 +89,12 @@ class UploadsRoutes implements RouteHandler {
} }
} }
} catch(RuntimeException $ex) { } catch(RuntimeException $ex) {
$response->setContent('Original data is missing.');
return 404; return 404;
} }
} }
if(!isset($variantInfo)) { if(!isset($variantInfo))
$response->setContent('Variant not available.');
return 404; return 404;
}
if($isOriginal) if($isOriginal)
$this->uploadsCtx->uploads->updateUpload( $this->uploadsCtx->uploads->updateUpload(
@ -114,20 +106,12 @@ class UploadsRoutes implements RouteHandler {
try { try {
$storageInfo = $this->storageCtx->records->getFile($variantInfo->fileId); $storageInfo = $this->storageCtx->records->getFile($variantInfo->fileId);
} catch(RuntimeException $ex) { } catch(RuntimeException $ex) {
$response->setContent('Data is missing.');
return 404; return 404;
} }
$denyInfo = $this->denylistCtx->getDenylistEntry($storageInfo); $denyInfo = $this->denylistCtx->getDenylistEntry($storageInfo);
if($denyInfo !== null) { if($denyInfo !== null)
$response->setContent(match($denyInfo->reason) {
DenylistReason::Copyright => 'File is unavailable for copyright reasons.',
DenylistReason::Rules => 'File was in violation of the rules.',
default => 'File was removed for reasons beyond understanding.',
});
return $denyInfo->isCopyrightTakedown ? 451 : 410; return $denyInfo->isCopyrightTakedown ? 451 : 410;
}
if($isJson) if($isJson)
return $this->uploadsCtx->convertToClientJsonV1($uploadInfo, $variantInfo, $storageInfo); return $this->uploadsCtx->convertToClientJsonV1($uploadInfo, $variantInfo, $storageInfo);
@ -273,10 +257,8 @@ class UploadsRoutes implements RouteHandler {
$uploadId = $this->uploadsCtx->uploads->resolveLegacyId($uploadId) ?? $uploadId; $uploadId = $this->uploadsCtx->uploads->resolveLegacyId($uploadId) ?? $uploadId;
$uploadSecret = null; $uploadSecret = null;
} else { } else {
if(strlen($uploadId) < 5) { if(strlen($uploadId) < 5)
$response->setContent('File not found.');
return 404; return 404;
}
$uploadSecret = substr($uploadId, -4); $uploadSecret = substr($uploadId, -4);
$uploadId = XNumber::fromBase62(substr($uploadId, 0, -4)); $uploadId = XNumber::fromBase62(substr($uploadId, 0, -4));
@ -285,7 +267,6 @@ class UploadsRoutes implements RouteHandler {
try { try {
$uploadInfo = $this->uploadsCtx->uploads->getUpload(uploadId: $uploadId, secret: $uploadSecret); $uploadInfo = $this->uploadsCtx->uploads->getUpload(uploadId: $uploadId, secret: $uploadSecret);
} catch(RuntimeException $ex) { } catch(RuntimeException $ex) {
$response->setContent('File not found.');
return 404; return 404;
} }