Example #1
0
 public function getResponse()
 {
     try {
         return new SuccesfullResponse($this->requestObject->getId(), $this->dispatchMethod($this->requestObject->getMethod(), $this->requestObject->getParams()));
     } catch (\Exception $e) {
         return new ErrorResponse($this->requestObject->getId(), array('message' => $e->getMessage(), 'code' => $e->getCode()));
     }
 }
Example #2
0
 /**
  * Read and parse a DNS response message.
  * 
  * This method assumes that the given request has been sent beforehand using the same transport.
  * 
  * @param Request $request The request that caused the incoming response message.
  * @return Response Parsed and validated DNS response message.
  * 
  * @throws ProtocolException When a malformed or invalid message is received.
  */
 public function parse(Request $request) : \Generator
 {
     $response = new Response(yield from $this->transport->readShort());
     $response->setFlags(yield from $this->transport->readShort());
     if ($response->getId() !== $request->getId()) {
         throw new ProtocolException(\sprintf('Expected DNS message ID is %u, server returned %u', $request->getId(), $response->getId()));
     }
     $questionCount = (yield from $this->transport->readShort());
     $answersCount = (yield from $this->transport->readShort());
     $response->setAuthorityCount(yield from $this->transport->readShort());
     $response->setAdditionalCount(yield from $this->transport->readShort());
     // Parse questions:
     for ($i = 0; $i < $questionCount; $i++) {
         yield from $this->parseQuestion($response);
     }
     if ($response->getQuestions() !== $request->getQuestions()) {
         throw new ProtocolException('DNS server did not return the question(s) in the response message');
     }
     // Parse answers:
     for ($i = 0; $i < $answersCount; $i++) {
         yield from $this->parseAnswer($response);
     }
     return $response;
 }
Example #3
0
 /**
  *  Trigger a request error (400) response (JSON format)
  *
  * @param unknown $code
  * @param string  $msg  The error message to return.
  * @param Request $request
  * @param unknown $data (optional)
  */
 public function request_error($code, $msg, Request $request = null, $data = null)
 {
     header('HTTP/1.1 400');
     Context::getInstance()->getLogger()->error(sprintf('Request error: %s - %s', $code, $msg));
     if ($request && $request->getType() == 'JSONRPC') {
         $jsonError = array("jsonrpc" => "2.0", "error" => array("code" => $code, "msg" => $msg, "data" => $data), "id" => $request ? $request->getId() : null);
         if ($data === null) {
             array_pop($jsonError["error"]);
         }
         header('Content-Type: application/json');
         echo json_encode($jsonError);
     } else {
         echo json_encode(array('error' => array('code' => $code, 'message' => $msg, 'data' => $data)));
     }
     ob_end_flush();
     exit;
 }
Example #4
0
 /**
  * Summary of requestReservationSent
  * @param Request $request
  * @param User $target
  */
 public static function requestReservationSent(Request $request, User $target)
 {
     self::send("Reservation of request {$request->getId()} ({$request->getName()}) sent to {$target->getUsername()} by " . User::getCurrent()->getUsername());
 }
 /**
  * @param Request $request
  */
 public function addRequest(Request $request)
 {
     $request->setFolder($this);
     $this->order[] = $request->getId();
     $this->requests[] = $request;
 }