|
@@ -11,6 +11,7 @@
|
|
|
|
|
|
namespace Symfony\Component\HttpKernel\DataCollector;
|
|
|
|
|
|
+use Symfony\Component\HttpFoundation\Cookie;
|
|
|
use Symfony\Component\HttpFoundation\ParameterBag;
|
|
|
use Symfony\Component\HttpFoundation\HeaderBag;
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
@@ -29,6 +30,15 @@ class RequestDataCollector extends DataCollector
|
|
|
*/
|
|
|
public function collect(Request $request, Response $response, \Exception $exception = null)
|
|
|
{
|
|
|
+ $responseHeaders = $response->headers->all();
|
|
|
+ $cookies = array();
|
|
|
+ foreach ($response->headers->getCookies() as $cookie) {
|
|
|
+ $cookies[] = $this->getCookieHeader($cookie->getName(), $cookie->getValue(), $cookie->getExpire(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttponly());
|
|
|
+ }
|
|
|
+ if (count($cookies) > 0) {
|
|
|
+ $responseHeaders['Set-Cookie'] = $cookies;
|
|
|
+ }
|
|
|
+
|
|
|
$this->data = array(
|
|
|
'format' => $request->getRequestFormat(),
|
|
|
'content_type' => $response->headers->get('Content-Type') ? $response->headers->get('Content-Type') : 'text/html',
|
|
@@ -39,7 +49,7 @@ class RequestDataCollector extends DataCollector
|
|
|
'request_server' => $request->server->all(),
|
|
|
'request_cookies' => $request->cookies->all(),
|
|
|
'request_attributes' => $request->attributes->all(),
|
|
|
- 'response_headers' => $response->headers->all(),
|
|
|
+ 'response_headers' => $responseHeaders,
|
|
|
'session_attributes' => $request->hasSession() ? $request->getSession()->getAttributes() : array(),
|
|
|
);
|
|
|
}
|
|
@@ -106,4 +116,40 @@ class RequestDataCollector extends DataCollector
|
|
|
{
|
|
|
return 'request';
|
|
|
}
|
|
|
+
|
|
|
+ protected function getCookieHeader($name, $value, $expires, $path, $domain, $secure, $httponly)
|
|
|
+ {
|
|
|
+ $cookie = sprintf('%s=%s', $name, urlencode($value));
|
|
|
+
|
|
|
+ if (0 !== $expires) {
|
|
|
+ if (is_numeric($expires)) {
|
|
|
+ $expires = (int) $expires;
|
|
|
+ } elseif ($expires instanceof \DateTime) {
|
|
|
+ $expires = $expires->getTimestamp();
|
|
|
+ } else {
|
|
|
+ $expires = strtotime($expires);
|
|
|
+ if (false === $expires || -1 == $expires) {
|
|
|
+ throw new \InvalidArgumentException(sprintf('The "expires" cookie parameter is not valid.', $expires));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $cookie .= '; expires='.substr(\DateTime::createFromFormat('U', $expires, new \DateTimeZone('UTC'))->format('D, d-M-Y H:i:s T'), 0, -5);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($domain) {
|
|
|
+ $cookie .= '; domain='.$domain;
|
|
|
+ }
|
|
|
+
|
|
|
+ $cookie .= '; path='.$path;
|
|
|
+
|
|
|
+ if ($secure) {
|
|
|
+ $cookie .= '; secure';
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($httponly) {
|
|
|
+ $cookie .= '; httponly';
|
|
|
+ }
|
|
|
+
|
|
|
+ return $cookie;
|
|
|
+ }
|
|
|
}
|