fix default respone generation

This commit is contained in:
Dennis Eichhorn 2023-07-26 09:18:05 +00:00
parent 8fffd628da
commit cf2796ea49

View File

@ -168,7 +168,7 @@ final class ApiController extends Controller
} }
} }
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media successfully created.', $ids); $this->createStandardAddResponse($request, $response, $ids);
} }
/** /**
@ -564,12 +564,10 @@ final class ApiController extends Controller
{ {
/** @var Media $old */ /** @var Media $old */
$old = MediaMapper::get()->where('id', (int) $request->getData('id'))->execute(); $old = MediaMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateMediaFromRequest($request, clone $old);
/** @var Media $new */
$new = $this->updateMediaFromRequest($request);
$this->updateModel($request->header->account, $old, $new, MediaMapper::class, 'media', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, MediaMapper::class, 'media', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media successfully updated', $new); $this->createStandardUpdateResponse($request, $response, $new);
} }
/** /**
@ -581,18 +579,14 @@ final class ApiController extends Controller
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private function updateMediaFromRequest(RequestAbstract $request) : Media private function updateMediaFromRequest(RequestAbstract $request, Media $new) : Media
{ {
$id = (int) $request->getData('id'); $new->name = $request->getDataString('name') ?? $new->name;
$new->description = $request->getDataString('description') ?? $new->description;
$new->setPath($request->getDataString('path') ?? $new->getPath());
$new->setVirtualPath(\urldecode($request->getDataString('virtualpath') ?? $new->getVirtualPath()));
/** @var Media $media */ if ($new->id === 0
$media = MediaMapper::get()->where('id', $id)->execute();
$media->name = $request->getDataString('name') ?? $media->name;
$media->description = $request->getDataString('description') ?? $media->description;
$media->setPath($request->getDataString('path') ?? $media->getPath());
$media->setVirtualPath(\urldecode($request->getDataString('virtualpath') ?? $media->getVirtualPath()));
if ($media->id === 0
|| !$this->app->accountManager->get($request->header->account)->hasPermission( || !$this->app->accountManager->get($request->header->account)->hasPermission(
PermissionType::MODIFY, PermissionType::MODIFY,
$this->app->unitId, $this->app->unitId,
@ -602,21 +596,21 @@ final class ApiController extends Controller
$request->header->account $request->header->account
) )
) { ) {
return $media; return $new;
} }
if ($request->hasData('content')) { if ($request->hasData('content')) {
\file_put_contents( \file_put_contents(
$media->isAbsolute $new->isAbsolute
? $media->getPath() ? $new->getPath()
: __DIR__ . '/../../../' . \ltrim($media->getPath(), '\\/'), : __DIR__ . '/../../../' . \ltrim($new->getPath(), '\\/'),
$request->getDataString('content') ?? '' $request->getDataString('content') ?? ''
); );
$media->size = \strlen($request->getDataString('content') ?? ''); $new->size = \strlen($request->getDataString('content') ?? '');
} }
return $media; return $new;
} }
/** /**
@ -635,8 +629,8 @@ final class ApiController extends Controller
public function apiReferenceCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiReferenceCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateReferenceCreate($request))) { if (!empty($val = $this->validateReferenceCreate($request))) {
$response->data['collection_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
@ -677,7 +671,7 @@ final class ApiController extends Controller
$request->getOrigin() $request->getOrigin()
); );
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Reference', 'Reference successfully created.', $ref); $this->createStandardCreateResponse($request, $response, $ref);
} }
/** /**
@ -772,16 +766,15 @@ final class ApiController extends Controller
public function apiCollectionCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiCollectionCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateCollectionCreate($request))) { if (!empty($val = $this->validateCollectionCreate($request))) {
$response->data['collection_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$collection = $this->createCollectionFromRequest($request); $collection = $this->createCollectionFromRequest($request);
$this->createModel($request->header->account, $collection, CollectionMapper::class, 'collection', $request->getOrigin()); $this->createModel($request->header->account, $collection, CollectionMapper::class, 'collection', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $collection);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Collection', 'Collection successfully created.', $collection);
} }
/** /**
@ -1027,7 +1020,7 @@ final class ApiController extends Controller
$ids[] = $created->id; $ids[] = $created->id;
} }
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media successfully created.', $ids); $this->createStandardAddResponse($request, $response, $ids);
} }
/** /**
@ -1392,16 +1385,15 @@ final class ApiController extends Controller
public function apiMediaTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiMediaTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateMediaTypeCreate($request))) { if (!empty($val = $this->validateMediaTypeCreate($request))) {
$response->data['media_type_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$type = $this->createDocTypeFromRequest($request); $type = $this->createDocTypeFromRequest($request);
$this->createModel($request->header->account, $type, MediaTypeMapper::class, 'doc_type', $request->getOrigin()); $this->createModel($request->header->account, $type, MediaTypeMapper::class, 'doc_type', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $type);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media type successfully created', $type);
} }
/** /**
@ -1465,16 +1457,15 @@ final class ApiController extends Controller
public function apiMediaTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiMediaTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateMediaTypeL11nCreate($request))) { if (!empty($val = $this->validateMediaTypeL11nCreate($request))) {
$response->data['media_type_l11n_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$l11nMediaType = $this->createMediaTypeL11nFromRequest($request); $l11nMediaType = $this->createMediaTypeL11nFromRequest($request);
$this->createModel($request->header->account, $l11nMediaType, MediaTypeL11nMapper::class, 'media_type_l11n', $request->getOrigin()); $this->createModel($request->header->account, $l11nMediaType, MediaTypeL11nMapper::class, 'media_type_l11n', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $l11nMediaType);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $l11nMediaType);
} }
/** /**