makeFromExisting() public static method

Make an API response from an existing Illuminate response.
public static makeFromExisting ( Illuminate\Http\Response $old ) : Response
$old Illuminate\Http\Response
return Response
Example #1
0
 /**
  * Handle an exception thrown during dispatching of an API request.
  *
  * @param \Exception $exception
  *
  * @throws \Exception
  *
  * @return \Dingo\Api\Http\Response
  */
 public function handle(Exception $exception)
 {
     if ($this->handler->willHandle($exception)) {
         $response = $this->handler->handle($exception);
         return Response::makeFromExisting($response);
     } elseif (!$exception instanceof HttpExceptionInterface) {
         throw $exception;
     }
     if (!($message = $exception->getMessage())) {
         $message = sprintf('%d %s', $exception->getStatusCode(), Response::$statusTexts[$exception->getStatusCode()]);
     }
     $response = ['message' => $message, 'status_code' => $exception->getStatusCode()];
     if ($exception instanceof ResourceException && $exception->hasErrors()) {
         $response['errors'] = $exception->getErrors();
     }
     if ($code = $exception->getCode()) {
         $response['code'] = $code;
     }
     if ($this->debug) {
         $response['debug'] = ['line' => $exception->getLine(), 'file' => $exception->getFile(), 'class' => get_class($exception), 'trace' => explode("\n", $exception->getTraceAsString())];
     }
     return new Response($response, $exception->getStatusCode(), $exception->getHeaders());
 }
Example #2
0
File: Router.php Project: jrean/api
 /**
  * Prepare a response by transforming and formatting it correctly.
  *
  * @param mixed                   $response
  * @param \Dingo\Api\Http\Request $request
  * @param string                  $format
  * @param bool                    $raw
  *
  * @return \Dingo\Api\Http\Response
  */
 protected function prepareResponse($response, Request $request, $format)
 {
     if ($response instanceof IlluminateResponse) {
         $response = Response::makeFromExisting($response);
     }
     if ($response instanceof Response) {
         // If we try and get a formatter that does not exist we'll let the exception
         // handler deal with it. At worst we'll get a generic JSON response that
         // a consumer can hopefully deal with. Ideally they won't be using
         // an unsupported format.
         try {
             $response->getFormatter($format)->setResponse($response)->setRequest($request);
         } catch (NotAcceptableHttpException $exception) {
             return $this->exception->handle($exception);
         }
         $response = $response->morph($format);
     }
     if ($response->isSuccessful() && $this->requestIsConditional()) {
         if (!$response->headers->has('ETag')) {
             $response->setEtag(md5($response->getContent()));
         }
         $response->isNotModified($request);
     }
     return $response;
 }
 /**
  * Authenticate the request for the given route.
  *
  * @param  \Symfony\Component\HttpFoundation\Request  $request
  * @param  \Illuminate\Routing\Route  $route
  * @return null|\Dingo\Api\Http\Response
  * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
  */
 protected function authenticate(Request $request, Route $route)
 {
     try {
         $this->auth->authenticate($request, $route);
     } catch (UnauthorizedHttpException $exception) {
         $response = $this->router->handleException($exception);
         list($version, $format) = $this->router->parseAcceptHeader($request);
         return Response::makeFromExisting($response)->morph($format);
     }
 }
Example #4
0
 /**
  * {@inheritDoc}
  */
 protected function prepareResponse($request, $response)
 {
     $response = parent::prepareResponse($request, $response);
     if ($this->requestTargettingApi($request)) {
         if ($response instanceof IlluminateResponse) {
             $response = ApiResponse::makeFromExisting($response);
         }
         if ($response->isSuccessful() && $this->getConditionalRequest()) {
             if (!$response->headers->has('ETag')) {
                 $response->setEtag(md5($response->getContent()));
             }
             $response->isNotModified($request);
         }
     }
     return $response;
 }