コード例 #1
0
 public function testJsonResponseSetter()
 {
     $data = ['foo', 'bar'];
     $response = new JsonResponse();
     $response->setContent($data);
     $this->assertEquals($data, $response->getContent());
 }
コード例 #2
0
 /**
  * @param Request $request
  * @return string
  */
 protected function getCallbackFromRequest(Request $request)
 {
     $response = new JsonResponse('');
     $response->setCallback($request->query->get(self::PARAMETER_CALLBACK));
     return $response->getCallback();
 }
コード例 #3
0
 /**
  * @param Request $request
  * @param JsonResponse $response
  */
 protected function wrapResponse(Request $request, JsonResponse $response)
 {
     switch ($request->query->get(self::PARAMETER_WRAPPER)) {
         case self::WRAPPER_POST_MESSAGE:
             $response->setContent($this->twig->render('MediaMonksRestApiBundle::post_message.html.twig', ['request' => $request, 'response' => $response, 'callback' => $request->query->get(self::PARAMETER_CALLBACK), 'origin' => $this->getPostMessageOrigin()]))->headers->set('Content-Type', 'text/html');
             break;
         default:
             $response->setCallback($request->query->get(self::PARAMETER_CALLBACK));
             break;
     }
 }
コード例 #4
0
 /**
  * converts content to correct output format
  *
  * @param FilterResponseEvent $event
  */
 public function onResponse(FilterResponseEvent $event)
 {
     if (!$this->isActive($event)) {
         return;
     }
     $request = $event->getRequest();
     $response = $event->getResponse();
     $content = $response->getContent();
     // convert content to content container
     if (!$content instanceof ResponseContainer) {
         $content = ResponseContainer::createAutoDetect($response);
     }
     // override http status code if needed
     $statusCode = $content->getStatusCode();
     if (!empty($statusCode)) {
         $response->setStatusCode($content->getStatusCode());
     }
     // set 204 header for empty content
     if ($content->isEmpty() && !$response->isRedirect()) {
         $response->setStatusCode(Response::HTTP_NO_CONTENT);
         $content->setStatusCode(Response::HTTP_NO_CONTENT);
     }
     // put statusCode in response and force 200 OK in header?
     if ($request->headers->has('X-Force-Status-Code-200') || $request->getRequestFormat() == self::FORMAT_JSON && $request->query->has('callback')) {
         $content->setReturnStatusCode(true);
         $response->setStatusCode(Response::HTTP_OK);
         $response->headers->set('X-Status-Code', Response::HTTP_OK);
     }
     // serialize content container
     try {
         $context = new SerializationContext();
         $context->setSerializeNull(true);
         $format = $event->getRequest()->getRequestFormat();
         $contentSerialized = $this->serializer->serialize($content->toArray(), $format, $context);
         switch ($format) {
             case self::FORMAT_XML:
                 $response->setContent($contentSerialized);
                 break;
             default:
                 $headers = $response->headers;
                 $response = new JsonResponse(null, $response->getStatusCode());
                 $response->headers = $headers;
                 $response->setContent($contentSerialized);
                 break;
         }
     } catch (\Exception $e) {
         $response = new JsonResponse(['error' => ['code' => 'error.api.middleware', 'message' => $e->getMessage()]]);
     }
     // force empty output on a no-content response
     if ($content->isEmpty() && $response->isEmpty()) {
         $response->setContent('');
     }
     $event->setResponse($response);
 }