예제 #1
0
파일: Restler.php 프로젝트: poqcz/restler
 /**
  * @return \Luracast\Restler\Data\Response\Response
  */
 protected function respond()
 {
     $this->dispatch('respond');
     //handle throttling
     if (Defaults::$throttle) {
         $elapsed = time() - $this->startTime;
         if (Defaults::$throttle / 1000.0 > $elapsed) {
             usleep(1000000.0 * (Defaults::$throttle / 1000.0 - $elapsed));
         }
     }
     if ($this->responseCode == 401) {
         $authString = count($this->authClasses) ? Scope::get($this->authClasses[0])->__getWWWAuthenticateString() : 'Unknown';
         $this->headerData->set(new HeaderKey('WWW-Authenticate', $authString), false);
     }
     $this->dispatch('complete');
     $errorException = null;
     if (!is_null($this->exception)) {
         $e = $this->exception;
         if ($e->getCode() >= 500) {
             if ($e->getMessage() == '') {
                 if (!is_null($this->exception->getPrevious())) {
                     $e = $this->exception->getPrevious();
                 }
             }
             $errorException = $e;
         }
     }
     return new \Luracast\Restler\Data\Response\Response($this->responseData, $this->headerData, $errorException);
 }