https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/php-laravel/ */ namespace OpenAPI\Server\Http\Controllers; use Crell\Serde\SerdeCommon; use Illuminate\Routing\Controller; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use OpenAPI\Server\Api\UserApiInterface; class UserController extends Controller { /** * Constructor */ public function __construct( private readonly UserApiInterface $api, private readonly SerdeCommon $serde = new SerdeCommon(), ) { } /** * Operation createUser * * Create user. * */ public function createUser(Request $request): JsonResponse { $validator = Validator::make( array_merge( [ ], $request->all(), ), [ ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } $user = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\User::class); try { $apiResult = $this->api->createUser($user); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContentDefault) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 0); } // This shouldn't happen return response()->abort(500); } /** * Operation createUsersWithArrayInput * * Creates list of users with given input array. * */ public function createUsersWithArrayInput(Request $request): JsonResponse { $validator = Validator::make( array_merge( [ ], $request->all(), ), [ ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } $user = $request->get('user'); try { $apiResult = $this->api->createUsersWithArrayInput($user); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContentDefault) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 0); } // This shouldn't happen return response()->abort(500); } /** * Operation createUsersWithListInput * * Creates list of users with given input array. * */ public function createUsersWithListInput(Request $request): JsonResponse { $validator = Validator::make( array_merge( [ ], $request->all(), ), [ ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } $user = $request->get('user'); try { $apiResult = $this->api->createUsersWithListInput($user); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContentDefault) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 0); } // This shouldn't happen return response()->abort(500); } /** * Operation deleteUser * * Delete user. * */ public function deleteUser(Request $request, string $username): JsonResponse { $validator = Validator::make( array_merge( [ 'username' => $username, ], $request->all(), ), [ 'username' => [ 'required', 'string', ], ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } try { $apiResult = $this->api->deleteUser($username); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent400) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 400); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent404) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 404); } // This shouldn't happen return response()->abort(500); } /** * Operation getUserByName * * Get user by user name. * */ public function getUserByName(Request $request, string $username): JsonResponse { $validator = Validator::make( array_merge( [ 'username' => $username, ], $request->all(), ), [ 'username' => [ 'required', 'string', ], ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } try { $apiResult = $this->api->getUserByName($username); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\User) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 200); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent400) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 400); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent404) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 404); } // This shouldn't happen return response()->abort(500); } /** * Operation loginUser * * Logs user into the system. * */ public function loginUser(Request $request): JsonResponse { $validator = Validator::make( array_merge( [ ], $request->all(), ), [ 'username' => [ 'required', 'string', ], 'password' => [ 'required', 'string', ], ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } $username = $request->string('username')->value(); $password = $request->string('password')->value(); try { $apiResult = $this->api->loginUser($username, $password); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof string) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 200); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent400) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 400); } // This shouldn't happen return response()->abort(500); } /** * Operation logoutUser * * Logs out current logged in user session. * */ public function logoutUser(Request $request): JsonResponse { $validator = Validator::make( array_merge( [ ], $request->all(), ), [ ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } try { $apiResult = $this->api->logoutUser(); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContentDefault) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 0); } // This shouldn't happen return response()->abort(500); } /** * Operation updateUser * * Updated user. * */ public function updateUser(Request $request, string $username): JsonResponse { $validator = Validator::make( array_merge( [ 'username' => $username, ], $request->all(), ), [ ], ); if ($validator->fails()) { return response()->json(['error' => 'Invalid input'], 400); } $user = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\User::class); try { $apiResult = $this->api->updateUser($username, $user); } catch (\Exception $exception) { // This shouldn't happen report($exception); return response()->json(['error' => $exception->getMessage()], 500); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent400) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 400); } if ($apiResult instanceof \OpenAPI\Server\Model\NoContent404) { return response()->json($this->serde->serialize($apiResult, format: 'array'), 404); } // This shouldn't happen return response()->abort(500); } }