Removed JsonSerializable implementations.
This commit is contained in:
parent
cd1de984d4
commit
d669221869
4 changed files with 42 additions and 60 deletions
|
@ -34,6 +34,26 @@ function eepromOriginAllowed(string $origin): bool {
|
|||
return in_array($origin, $allowed);
|
||||
}
|
||||
|
||||
function eepromUploadInfo(Upload $uploadInfo): array {
|
||||
return [
|
||||
'id' => $uploadInfo->getId(),
|
||||
'url' => $uploadInfo->getPublicUrl(),
|
||||
'urlf' => $uploadInfo->getPublicUrl(true),
|
||||
'thumb' => $uploadInfo->getPublicThumbUrl(),
|
||||
'name' => $uploadInfo->getName(),
|
||||
'type' => $uploadInfo->getType(),
|
||||
'size' => $uploadInfo->getSize(),
|
||||
'user' => $uploadInfo->getUserId(),
|
||||
'appl' => $uploadInfo->getApplicationId(),
|
||||
'hash' => $uploadInfo->getHash(),
|
||||
'created' => date('c', $uploadInfo->getCreated()),
|
||||
'accessed' => $uploadInfo->hasBeenAccessed() ? date('c', $uploadInfo->getLastAccessed()) : null,
|
||||
'expires' => $uploadInfo->hasExpired() ? date('c', $uploadInfo->getExpires()) : null,
|
||||
'deleted' => $uploadInfo->isDeleted() ? date('c', $uploadInfo->getDeleted()) : null,
|
||||
'dmca' => $uploadInfo->isDMCA() ? date('c', $uploadInfo->getDMCA()) : null,
|
||||
];
|
||||
}
|
||||
|
||||
$isApiDomain = $_SERVER['HTTP_HOST'] === $cfg->getString('domain:api');
|
||||
$router = new HttpFx;
|
||||
|
||||
|
@ -174,23 +194,23 @@ if($isApiDomain) {
|
|||
$hash = hash_file('sha256', $localFile);
|
||||
|
||||
// this is stupid: dmca status is stored as a file record rather than in a separate table requiring this hack ass garbage
|
||||
$fileInfo = Upload::byUserHash($db, $userInfo, $hash) ?? Upload::byHash($db, $hash);
|
||||
$uploadInfo = Upload::byUserHash($db, $userInfo, $hash) ?? Upload::byHash($db, $hash);
|
||||
|
||||
if($fileInfo !== null) {
|
||||
if($fileInfo->isDMCA())
|
||||
if($uploadInfo !== null) {
|
||||
if($uploadInfo->isDMCA())
|
||||
return 451;
|
||||
|
||||
if($fileInfo->getUserId() !== $userInfo->getId()
|
||||
|| $fileInfo->getApplicationId() !== $appInfo->getId())
|
||||
unset($fileInfo);
|
||||
if($uploadInfo->getUserId() !== $userInfo->getId()
|
||||
|| $uploadInfo->getApplicationId() !== $appInfo->getId())
|
||||
unset($uploadInfo);
|
||||
}
|
||||
|
||||
if(!empty($fileInfo)) {
|
||||
if($fileInfo->isDeleted())
|
||||
$fileInfo->restore($db);
|
||||
$fileInfo->bumpExpiry($db);
|
||||
if(!empty($uploadInfo)) {
|
||||
if($uploadInfo->isDeleted())
|
||||
$uploadInfo->restore($db);
|
||||
$uploadInfo->bumpExpiry($db);
|
||||
} else {
|
||||
$fileInfo = Upload::create(
|
||||
$uploadInfo = Upload::create(
|
||||
$db, $appInfo, $userInfo,
|
||||
$file->getSuggestedFileName(),
|
||||
mime_content_type($localFile),
|
||||
|
@ -198,12 +218,13 @@ if($isApiDomain) {
|
|||
$appInfo->getExpiry(), true
|
||||
);
|
||||
|
||||
$file->moveTo($fileInfo->getPath());
|
||||
$file->moveTo($uploadInfo->getPath());
|
||||
}
|
||||
|
||||
$response->setStatusCode(201);
|
||||
$response->setHeader('Content-Type', 'application/json; charset=utf-8');
|
||||
return $fileInfo;
|
||||
|
||||
return eepromUploadInfo($uploadInfo);
|
||||
});
|
||||
|
||||
$router->delete('/uploads/:fileid', function($response, $request, $fileId) use ($db) {
|
||||
|
@ -252,7 +273,7 @@ if($isApiDomain) {
|
|||
}
|
||||
|
||||
if($isJson)
|
||||
return $uploadInfo;
|
||||
return eepromUploadInfo($uploadInfo);
|
||||
|
||||
if($uploadInfo->isDMCA()) {
|
||||
$response->setContent('File is unavailable for copyright reasons.');
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
namespace EEPROM;
|
||||
|
||||
use RuntimeException;
|
||||
use JsonSerializable;
|
||||
use Index\Data\IDbConnection;
|
||||
|
||||
final class Application implements JsonSerializable {
|
||||
final class Application {
|
||||
public function __construct(
|
||||
private int $id = 0,
|
||||
private string $name = '',
|
||||
|
@ -39,17 +38,6 @@ final class Application implements JsonSerializable {
|
|||
return $this->expiry;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): mixed {
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'name' => $this->name,
|
||||
'size_limit' => $this->sizeLimit,
|
||||
'size_multi' => $this->allowSizeMultiplier,
|
||||
'expiry' => $this->expiry,
|
||||
'created' => date('c', $this->created),
|
||||
];
|
||||
}
|
||||
|
||||
public static function byId(IDbConnection $conn, int $appId): self {
|
||||
$get = $conn->prepare(
|
||||
'SELECT `app_id`, `app_name`, `app_size_limit`, `app_expiry`, `app_allow_size_multiplier`,'
|
||||
|
|
|
@ -5,12 +5,11 @@ use Exception;
|
|||
use InvalidArgumentException;
|
||||
use RuntimeException;
|
||||
use Imagick;
|
||||
use JsonSerializable;
|
||||
use Index\XString;
|
||||
use Index\Data\IDbConnection;
|
||||
use Index\Data\IDbResult;
|
||||
|
||||
final class Upload implements JsonSerializable {
|
||||
final class Upload {
|
||||
public function __construct(
|
||||
private string $id = '',
|
||||
private int $userId = 0,
|
||||
|
@ -89,6 +88,10 @@ final class Upload implements JsonSerializable {
|
|||
return $this->created;
|
||||
}
|
||||
|
||||
public function hasBeenAccessed(): bool {
|
||||
return $this->accessed < 1;
|
||||
}
|
||||
|
||||
public function getLastAccessed(): int {
|
||||
return $this->accessed;
|
||||
}
|
||||
|
@ -175,26 +178,6 @@ final class Upload implements JsonSerializable {
|
|||
}
|
||||
}
|
||||
|
||||
public function jsonSerialize(): mixed {
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'url' => $this->getPublicUrl(),
|
||||
'urlf' => $this->getPublicUrl(true),
|
||||
'thumb' => $this->getPublicThumbUrl(),
|
||||
'name' => $this->name,
|
||||
'type' => $this->type,
|
||||
'size' => $this->size,
|
||||
'user' => $this->userId,
|
||||
'appl' => $this->appId,
|
||||
'hash' => $this->hash,
|
||||
'created' => date('c', $this->created),
|
||||
'accessed' => $this->accessed < 1 ? null : date('c', $this->accessed),
|
||||
'expires' => $this->expires < 1 ? null : date('c', $this->expires),
|
||||
'deleted' => $this->deleted < 1 ? null : date('c', $this->deleted),
|
||||
'dmca' => $this->dmca < 1 ? null : date('c', $this->dmca),
|
||||
];
|
||||
}
|
||||
|
||||
public static function create(
|
||||
IDbConnection $conn,
|
||||
Application $app, User $user,
|
||||
|
|
12
src/User.php
12
src/User.php
|
@ -2,10 +2,9 @@
|
|||
namespace EEPROM;
|
||||
|
||||
use RuntimeException;
|
||||
use JsonSerializable;
|
||||
use Index\Data\IDbConnection;
|
||||
|
||||
class User implements JsonSerializable {
|
||||
class User {
|
||||
private static $active;
|
||||
|
||||
public static function hasActive(): bool {
|
||||
|
@ -50,15 +49,6 @@ class User implements JsonSerializable {
|
|||
return $this->restricted > 0;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): mixed {
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'size_multi' => $this->sizeMultiplier,
|
||||
'created' => date('c', $this->created),
|
||||
'restricted' => $this->restricted < 1 ? null : date('c', $this->restricted),
|
||||
];
|
||||
}
|
||||
|
||||
public static function byId(IDbConnection $conn, int $userId): self {
|
||||
$create = $conn->prepare('INSERT IGNORE INTO `prm_users` (`user_id`) VALUES (?)');
|
||||
$create->addParameter(1, $userId);
|
||||
|
|
Loading…
Reference in a new issue