faultManagerService = $faultManagerService; } /** * Return all faults accessible to the user * * @param ServerRequestInterface $request * @param DelegateInterface $delegate * @return \Zend\Diactoros\Response */ public function getList(ServerRequestInterface $request, DelegateInterface $delegate): Response { return new JsonCorsResponse($this->faultManagerService->getFaultList()); } /** * Return a single fault * * @param ServerRequestInterface $request * @param DelegateInterface $delegate * @return \Zend\Diactoros\Response */ public function get(ServerRequestInterface $request, DelegateInterface $delegate): Response { $id = $request->getAttribute('id', false); return new JsonCorsResponse($this->faultManagerService->getFault($id)); } /** * Post a new fault report * * @param ServerRequestInterface $request * @param DelegateInterface $delegate * @return \Zend\Diactoros\Response */ public function create(ServerRequestInterface $request, DelegateInterface $delegate): Response { try { $data = $this->getRequestData($request); $token = $request->getAttribute('token'); return new JsonCorsResponse($this->faultManagerService->createFault($data, $token->uid), 201); } catch (\Exception $e) { return new JsonCorsResponse($e->getMessage(), 500); } } /** * Update a fault report * * @param ServerRequestInterface $request * @param DelegateInterface $delegate * @return \Zend\Diactoros\Response */ public function update(ServerRequestInterface $request, DelegateInterface $delegate): Response { try { $id = $request->getAttribute('id'); $token = $request->getAttribute('token'); $data = $this->getRequestData($request); return new JsonCorsResponse($this->faultManagerService->updateFault($id, $data, $token->uid)); } catch (\Exception $e) { return new JsonCorsResponse($e->getMessage(), 500); } } /** * Delete a fault report (NYI) * * @param ServerRequestInterface $request * @param DelegateInterface $delegate * @return \Zend\Diactoros\Response */ public function delete(ServerRequestInterface $request, DelegateInterface $delegate): Response { try { $id = $request->getAttribute('id'); return new JsonCorsResponse($this->faultManagerService->deleteFault($id)); } catch (\Exception $e) { return new JsonCorsResponse($e->getMessage(), $e->getCode()); } } /** * Configure CORS preflight * * @param ServerRequestInterface $request * @param DelegateInterface $delegate * @return \Zend\Diactoros\Response */ public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response { return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); } }