Example #1
0
 /**
  * Handles the request and returns the underlying protocol implementation's
  * result wrapped into a Response object
  * @param \Conjoon\Mail\Server\Request\Request $request
  *
  * @return Response
  */
 public function handle(\Conjoon\Mail\Server\Request\Request $request)
 {
     $responseBody = $this->responseBodyClassName;
     $responseClass = $this->responseClassName;
     $errorResult = $this->errorResultClassName;
     if (!method_exists($this->protocol, $request->getProtocolCommand())) {
         $error = new $errorResult(new \Conjoon\Mail\Server\Protocol\ProtocolException("The protocol does not understand the command " . "\"" . $request->getProtocolCommand() . "\""));
         return new $responseClass($request, new $responseBody($error->toArray()), array('status' => \Conjoon\Mail\Server\Response\Response::STATUS_CODE_101));
     }
     $command = $request->getProtocolCommand();
     $result = $this->protocol->{$command}(array('user' => $request->getUser(), 'parameters' => $request->getParameters()));
     if ($result instanceof \Conjoon\Mail\Server\Protocol\ErrorResult) {
         return new $responseClass($request, new $responseBody($result->toArray()), array('status' => \Conjoon\Mail\Server\Response\Response::STATUS_CODE_100));
     }
     return new $responseClass($request, new $responseBody($result->toArray()), array('status' => \Conjoon\Mail\Server\Response\Response::STATUS_CODE_200));
 }