public function run(ServerRequestInterface $request, ResponseBuilder $responseBuilder) : Response { try { $image = $this->profileService->uploadImage($request->getAttribute('profileId'), (new UploadImageRequest($request))->getParameters()); $responseBuilder->setStatusSuccess()->setJson(['image' => $image->toJSON()]); } catch (ImageServiceException $e) { $responseBuilder->setStatusNotProcessable()->setError($e); } catch (ProfileNotFoundException $e) { $responseBuilder->setError($e)->setStatusNotFound(); } return $responseBuilder->build(); }