예제 #1
0
 /**
  * @param Request $request
  * @param $processor
  * @param string $protocol
  * @return Response
  */
 public static function make($request, $processor, $protocol)
 {
     $readTransport = new TMemoryBuffer($request->getContent());
     $writeTransport = new TMemoryBuffer();
     switch ($protocol) {
         case 'json':
             $readProtocol = new TJSONProtocol($readTransport);
             $writeProtocol = new TJSONProtocol($writeTransport);
             break;
         case 'binary':
             $readProtocol = new TBinaryProtocol($readTransport);
             $writeProtocol = new TBinaryProtocol($writeTransport);
             break;
         case 'compact':
             $readProtocol = new TCompactProtocol($readTransport);
             $writeProtocol = new TCompactProtocol($writeTransport);
             break;
         default:
             throw new UnexpectedValueException();
     }
     $readTransport->open();
     $writeTransport->open();
     $processor->process($readProtocol, $writeProtocol);
     $readTransport->close();
     $writeTransport->close();
     $content = $writeTransport->getBuffer();
     return new Response($content, 200, ['Content-Type' => 'application/x-thrift', 'Access-Control-Allow-Origin' => $request->header('origin')]);
 }