Example #1
0
 private function sendRequestAsyncInternal(BaseRequest &$request, BaseResponse &$response, AsyncCallback $callback = NULL)
 {
     $this->addRequiredHeaders($request);
     $parameters = array('exceptions' => false, 'http_errors' => false);
     $queryString = $request->getQueryString();
     $body = $request->getBody();
     if ($queryString != NULL) {
         $parameters['query'] = $queryString;
     }
     if ($body != NULL) {
         $parameters['body'] = $body;
     }
     $request = new Request(strtoupper($request->getMethod()), $request->getResourcePath(), $request->getHeaders());
     try {
         if ($callback != NULL) {
             return $this->client->sendAsync($request, $parameters)->then(function ($res) use(&$response, $callback) {
                 try {
                     $response->parseResponse($res->getStatusCode(), $res->getBody());
                     $callback->onSucceed($response);
                 } catch (MnsException $e) {
                     $callback->onFailed($e);
                 }
             });
         } else {
             return $this->client->sendAsync($request, $parameters);
         }
     } catch (TransferException $e) {
         $message = $e->getMessage();
         if ($e->hasResponse()) {
             $message = $e->getResponse()->getBody();
         }
         throw new MnsException($e->getCode(), $message, $e);
     }
 }