Example #1
0
 /**
  * Send the Request Collection to a Server
  * @param $url
  * @param Request\TrackingRequestCollection $requestCollection
  * @return Request\TrackingRequestCollection|void
  * @throws Exception\EndpointServerException
  */
 public function send($url, Request\TrackingRequestCollection $requestCollection)
 {
     // get endpoint
     $endpoint = parse_url($url);
     $this->createConenction($endpoint);
     /** @var Request\TrackingRequest $request */
     while ($requestCollection->valid()) {
         $request = $requestCollection->current();
         $requestCollection->next();
         $this->writeHeader($endpoint, $request, !$requestCollection->valid());
         $responseHeader = $this->readConnection($request);
         $request->setResponseHeader($responseHeader);
     }
     // connection close
     fclose($this->connection);
     return $requestCollection;
 }
 /**
  * Call the client adapter
  *
  * @param $tracking
  * @throws Exception\InvalidArgumentException
  * @throws Exception\MissingConfigurationException
  * @return Request\TrackingRequestCollection
  */
 private function callEndpoint($tracking)
 {
     $trackingHolder = is_array($tracking) ? $tracking : array($tracking);
     $trackingCollection = new Request\TrackingRequestCollection();
     foreach ($trackingHolder as $tracking) {
         if (!$tracking instanceof Tracking\AbstractTracking) {
             continue;
         }
         $payloadData = $this->getTrackingPayloadData($tracking);
         $trackingRequest = new Request\TrackingRequest($payloadData);
         $trackingCollection->add($trackingRequest);
     }
     $adapterOptions = $this->getOption('adapter');
     $clientAdapter = $this->clientAdapter;
     $clientAdapter->setOptions($adapterOptions);
     return $clientAdapter->send($this->apiEndpointUrl, $trackingCollection);
 }
 public function testSingleTracking()
 {
     $service = new GATracking('foo');
     $trackingRequest = new TrackingRequest();
     $trackingRequest->setPayload(array('foo' => 'bar'));
     $trackingRequest->setResponseHeader(array('baz' => 'fooBar'));
     $collection = new TrackingRequestCollection();
     $collection->add($trackingRequest);
     $clientMock = $this->getMock('Racecore\\GATracking\\Client\\Adapter\\Socket');
     $clientMock->expects($this->once())->method('send')->will($this->returnValue($collection));
     $tracking = $this->getMock('Racecore\\GATracking\\Tracking\\Event');
     $tracking->expects($this->once())->method('getPackage')->will($this->returnValue(array('test' => 'bar')));
     $service->setClientAdapter($clientMock);
     $response = $service->sendTracking($tracking);
     $responsePayload = $response->getPayload();
     $responseHeader = $response->getResponseHeader();
     $this->assertInstanceOf('Racecore\\GATracking\\Request\\TrackingRequest', $response);
     $this->assertArrayHasKey('foo', $responsePayload);
     $this->assertEquals('bar', $responsePayload['foo']);
     $this->assertArrayHasKey('baz', $responseHeader);
     $this->assertEquals('fooBar', $responseHeader['baz']);
 }