/** * @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')]); }