From 31bd6c7bb5cb2c060d0516547c8959fef1b8b7fd Mon Sep 17 00:00:00 2001 From: provokateurin Date: Sun, 18 Aug 2024 18:16:52 +0200 Subject: [PATCH] fix(OpenAPI): Fix duplicate status code definitions Signed-off-by: provokateurin --- lib/Controller/ApiController.php | 10 +- lib/Controller/OldApiController.php | 16 ++- lib/Controller/PublicApiController.php | 10 +- lib/Service/ProjectService.php | 6 +- openapi.json | 140 ++++++++----------------- 5 files changed, 59 insertions(+), 123 deletions(-) diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 6e40cc131..cefc5abcc 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -379,7 +379,7 @@ public function deleteMember(string $projectId, int $memberId): DataResponse { * @param null $activated * @param string|null $color * @param string|null $userId - * @return DataResponse|DataResponse|DataResponse, array{}> + * @return DataResponse|DataResponse, array{}> * * 200: Member was successfully edited (and deleted if it was disabled and wasn't ower of any bill) * 400: Failed to edit the member @@ -398,13 +398,11 @@ public function editMember( $activated = false; } $result = $this->projectService->editMember($projectId, $memberId, $name, $userId, $weight, $activated, $color); - if (empty($result)) { - return new DataResponse(null); - } elseif (isset($result['activated'])) { + if ($result === null || isset($result['activated'])) { return new DataResponse($result); - } else { - return new DataResponse($result, Http::STATUS_BAD_REQUEST); } + + return new DataResponse($result, Http::STATUS_BAD_REQUEST); } /** diff --git a/lib/Controller/OldApiController.php b/lib/Controller/OldApiController.php index f335c5554..f2a557c8a 100644 --- a/lib/Controller/OldApiController.php +++ b/lib/Controller/OldApiController.php @@ -723,13 +723,11 @@ public function apiEditMember(string $token, int $memberid, $result = $this->projectService->editMember( $publicShareInfo['projectid'], $memberid, $name, $userid, $weight, $activated, $color ); - if (count($result) === 0) { - return new DataResponse(null); - } elseif (array_key_exists('activated', $result)) { + if ($result === null || isset($result['activated'])) { return new DataResponse($result); - } else { - return new DataResponse($result, Http::STATUS_FORBIDDEN); } + + return new DataResponse($result, Http::STATUS_FORBIDDEN); } #[NoAdminRequired] @@ -744,13 +742,11 @@ public function apiPrivEditMember(string $projectId, int $memberid, ?string $nam $activated = false; } $result = $this->projectService->editMember($projectId, $memberid, $name, $userid, $weight, $activated, $color); - if (count($result) === 0) { - return new DataResponse(null); - } elseif (array_key_exists('activated', $result)) { + if ($result === null || isset($result['activated'])) { return new DataResponse($result); - } else { - return new DataResponse($result, Http::STATUS_FORBIDDEN); } + + return new DataResponse($result, Http::STATUS_FORBIDDEN); } #[NoAdminRequired] diff --git a/lib/Controller/PublicApiController.php b/lib/Controller/PublicApiController.php index bb9b1eef3..2a8454dda 100644 --- a/lib/Controller/PublicApiController.php +++ b/lib/Controller/PublicApiController.php @@ -705,7 +705,7 @@ public function publicDeleteMember(string $token, int $memberId): DataResponse { * @param null $activated * @param string|null $color * @param string|null $userId - * @return DataResponse|DataResponse|DataResponse, array{}> + * @return DataResponse|DataResponse, array{}> * @throws Exception */ #[NoAdminRequired] @@ -727,13 +727,11 @@ public function publicEditMember( $result = $this->projectService->editMember( $publicShareInfo['projectid'], $memberId, $name, $userId, $weight, $activated, $color ); - if (count($result) === 0) { - return new DataResponse(null); - } elseif (isset($result['activated'])) { + if ($result === null || isset($result['activated'])) { return new DataResponse($result); - } else { - return new DataResponse($result, Http::STATUS_FORBIDDEN); } + + return new DataResponse($result, Http::STATUS_FORBIDDEN); } /** diff --git a/lib/Service/ProjectService.php b/lib/Service/ProjectService.php index 2a0fd9b5f..910e893cf 100644 --- a/lib/Service/ProjectService.php +++ b/lib/Service/ProjectService.php @@ -1269,12 +1269,12 @@ private function sortCreditersDebiters(array $arr, bool $reverse = false): array * @param float|null $weight * @param bool $activated * @param string|null $color - * @return array + * @return array|null */ public function editMember( string $projectId, int $memberId, ?string $name = null, ?string $userId = null, ?float $weight = null, ?bool $activated = null, ?string $color = null - ): array { + ): array|null { $dbMember = $this->memberMapper->getMemberById($projectId, $memberId); if ($dbMember === null) { return ['name' => $this->l10n->t('This project have no such member')]; @@ -1286,7 +1286,7 @@ public function editMember( && count($this->memberMapper->getBillIdsOfMember($memberId)) === 0 ) { $this->memberMapper->delete($dbMember); - return []; + return null; } if ($name !== null) { diff --git a/openapi.json b/openapi.json index 0c8a6d524..98a4d255d 100644 --- a/openapi.json +++ b/openapi.json @@ -7640,58 +7640,30 @@ "description": "Member was successfully edited (and deleted if it was disabled and wasn't ower of any bill)", "content": { "application/json": { - "schema": [ - { - "oneOf": [ - { - "type": "object", - "required": [ - "ocs" - ], - "properties": { - "ocs": { - "type": "object", - "required": [ - "meta", - "data" - ], - "properties": { - "meta": { - "$ref": "#/components/schemas/OCSMeta" - }, - "data": { - "nullable": true - } - } - } - } - }, - { - "type": "object", - "required": [ - "ocs" - ], - "properties": { - "ocs": { - "type": "object", - "required": [ - "meta", - "data" - ], - "properties": { - "meta": { - "$ref": "#/components/schemas/OCSMeta" - }, - "data": { - "$ref": "#/components/schemas/Member" - } - } - } + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/Member", + "nullable": true } } - ] + } } - ] + } } } }, @@ -8216,58 +8188,30 @@ "description": "", "content": { "application/json": { - "schema": [ - { - "oneOf": [ - { - "type": "object", - "required": [ - "ocs" - ], - "properties": { - "ocs": { - "type": "object", - "required": [ - "meta", - "data" - ], - "properties": { - "meta": { - "$ref": "#/components/schemas/OCSMeta" - }, - "data": { - "nullable": true - } - } - } - } - }, - { - "type": "object", - "required": [ - "ocs" - ], - "properties": { - "ocs": { - "type": "object", - "required": [ - "meta", - "data" - ], - "properties": { - "meta": { - "$ref": "#/components/schemas/OCSMeta" - }, - "data": { - "$ref": "#/components/schemas/Member" - } - } - } + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/Member", + "nullable": true } } - ] + } } - ] + } } } },