src/Adapter/Qbwc/Controller/QbSoapController.php line 63

Open in your IDE?
  1. <?php
  2. namespace App\Adapter\Qbwc\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use FOS\RestBundle\Routing\ClassResourceInterface;
  7. use App\Adapter\Qbwc\Service\QbRequest;
  8. use App\Adapter\Qbwc\Service\QbResponse;
  9. use App\Hub\Sdk;
  10. use FOS\RestBundle\Controller\Annotations\RouteResource;
  11. use Symfony\Component\Serializer\SerializerInterface;
  12. use App\Adapter\Api\Annotations\ApiAuthorization;
  13. use Symfony\Component\Validator\Validator\ValidatorInterface;
  14. use Swagger\Annotations as SWG;
  15. use Nelmio\ApiDocBundle\Annotation\Security;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Nelmio\ApiDocBundle\Annotation\Model;
  18. use Psr\Log\LoggerInterface;
  19. require_once __DIR__ '/../../../../lib/soap_server_functions.php';
  20. class QbSoapController extends Controller implements ClassResourceInterface
  21. {
  22.     /**
  23.      * @var QbRequest
  24.      */
  25.     private $qbRequest;
  26.     /**
  27.      * @var QbResponse
  28.      */
  29.     private $qbResponse;
  30.     /**
  31.      * @var Sdk
  32.      */
  33.     private $sdk;
  34.     /**
  35.      * @var LoggerInterface
  36.      */
  37.     private $logger;
  38.     public function __construct(
  39.         \Symfony\Component\HttpFoundation\Session\SessionInterface $session,
  40.         QbRequest $qbRequest,
  41.         QbResponse $qbResponse,
  42.         Sdk $sdk,
  43.         LoggerInterface $logger
  44.     ) {
  45.         $this->session $session;
  46.         $this->qbRequest $qbRequest;
  47.         $this->qbResponse $qbResponse;
  48.         $this->sdk $sdk;
  49.         $this->logger $logger;
  50.     }
  51.     /**
  52.      * @Route("/qbsoap", name="qbsoap_route")
  53.      */
  54.     public function runWebConnectorMethods(Request $request)
  55.     {
  56.         $server = new \soap_server();
  57.         $this->logger->error('Request' $request->getContent());
  58.         $server->register(
  59.             "serverVersion",
  60.             [],
  61.             [
  62.                 "return" => "xsd:string"
  63.             ]
  64.         );
  65.         $server->register(
  66.             "authenticate",
  67.             [
  68.                 "strUserName" => "xsd:string",
  69.                 "strPassword" => "xsd:string"
  70.             ],
  71.             [
  72.                 "return" => "tns:ArrayOfString"
  73.             ]
  74.         );
  75.         $server->register(
  76.             "clientVersion",
  77.             [
  78.                 "strVersion" => "xsd:string"
  79.             ],
  80.             [
  81.                 "return" => "xsd:string"
  82.             ]
  83.         );
  84.         $server->register(
  85.             "sendRequestXML",
  86.             [
  87.                 "ticket" => "xsd:string",
  88.                 "strHCPResponse" => "xsd:string",
  89.                 "strCompanyFileName" => "xsd:string",
  90.                 "qbXMLCountry" => "xsd:string",
  91.                 "qbXMLMajorVers" => "xsd:int",
  92.                 "qbXMLMinorVers" => "xsd:int"
  93.             ],
  94.             [
  95.                 "return" => "xsd:string"
  96.             ]
  97.         );
  98.         $server->register(
  99.             "receiveResponseXML",
  100.             [
  101.                 "ticket" => "xsd:string",
  102.                 "response" => "xsd:string",
  103.                 "hresult" => "xsd:string",
  104.                 "message" => "xsd:string"
  105.             ],
  106.             [
  107.                 "return" => "s:int"
  108.             ]
  109.         );
  110.         $server->register(
  111.             "connectionError",
  112.             [
  113.                 "ticket" => "xsd:string",
  114.                 "hresult" => "xsd:string",
  115.                 "message" => "xsd:string"
  116.             ],
  117.             [
  118.                 "return" => "xsd:string"
  119.             ]
  120.         );
  121.         $server->register(
  122.             "getLastError",
  123.             [
  124.                 "ticket" => "xsd:string"
  125.             ],
  126.             [
  127.                 "return" => "xsd:string"
  128.             ]
  129.         );
  130.         $server->register(
  131.             "closeConnection",
  132.             [
  133.                 "ticket" => "xsd:string"
  134.             ],
  135.             [
  136.                 "return" => "xsd:string"
  137.             ]
  138.         );
  139.         // $_SERVER['content-type'] = 'text/xml; charset=utf-8';   // (was necessary when running with PHPUnit)
  140.         ob_start();
  141.         $server->service($request->getContent());
  142.         $soapResponse ob_get_clean();
  143.         return new Response(
  144.             $soapResponse,
  145.             200,
  146.             ['content-type' => 'text/xml''Content-Encoding' => 'gzip']
  147.         );
  148.     }
  149. }