Ejemplo n.º 1
0
 /**
  * Write the connection header
  * @param $endpoint
  * @param Request\TrackingRequest $request
  * @param bool $lastData
  * @return string
  * @throws Exception\EndpointServerException
  */
 private function writeHeader($endpoint, Request\TrackingRequest $request, $lastData = false)
 {
     // create data
     $payloadString = http_build_query($request->getPayload());
     $payloadLength = strlen($payloadString);
     $header = 'POST ' . $endpoint['path'] . ' HTTP/1.1' . "\r\n" . 'Host: ' . $endpoint['host'] . "\r\n" . 'User-Agent: Google-Measurement-PHP-Client' . "\r\n" . 'Content-Length: ' . $payloadLength . "\r\n" . ($lastData ? 'Connection: Close' . "\r\n" : '') . "\r\n";
     // fwrite + check if fwrite was ok
     if (!fwrite($this->connection, $header) || !fwrite($this->connection, $payloadString)) {
         throw new Exception\EndpointServerException('Server closed connection unexpectedly');
     }
     return $header;
 }
Ejemplo n.º 2
0
 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']);
 }