✏️ 正在编辑: GuzzleCollector.php
路径:
/home/bpioifn/www/pigmentse/vendor/csa/guzzle-bundle/src/DataCollector/GuzzleCollector.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php /* * This file is part of the CsaGuzzleBundle package * * (c) Charles Sarrazin <charles@sarraz.in> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code */ namespace Csa\Bundle\GuzzleBundle\DataCollector; use Csa\Bundle\GuzzleBundle\GuzzleHttp\Subscriber\DebugSubscriber; use GuzzleHttp\Stream\StreamInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\DataCollector\DataCollector; /** * Csa Guzzle Collector. * * @author Charles Sarrazin <charles@sarraz.in> */ class GuzzleCollector extends DataCollector { const MAX_BODY_SIZE = 0x10000; private $history; private $maxBodySize; /** * Constructor. * * @param DebugSubscriber $history the request history subscriber */ public function __construct(DebugSubscriber $history, $maxBodySize = self::MAX_BODY_SIZE) { $this->history = $history; $this->maxBodySize = $maxBodySize; $this->data = []; } /** * {@inheritdoc} */ public function collect(Request $request, Response $response, \Exception $exception = null) { $data = []; foreach ($this->history as $transaction) { $request = $transaction['request']; $response = $transaction['response']; $error = $transaction['exception']; $info = $transaction['info']; $req = [ 'request' => [ 'method' => $request->getMethod(), 'version' => $request->getProtocolVersion(), 'headers' => $request->getHeaders(), 'body' => $this->cropContent($request->getBody()), ], 'info' => $info, 'uri' => $request->getUrl(), ]; if ($response) { $req['response'] = [ 'reasonPhrase' => $response->getReasonPhrase(), 'headers' => $response->getHeaders(), 'body' => $this->cropContent($response->getBody()), ]; } $req['httpCode'] = $response ? $response->getStatusCode() : 0; if ($error) { $req['error'] = [ 'message' => $error->getMessage(), 'line' => $error->getLine(), 'file' => $error->getFile(), 'code' => $error->getCode(), 'trace' => $error->getTraceAsString(), ]; } if ($cache = $request->getConfig()->get('cache_lookup')) { $req['cache'] = $cache; } $data[] = $req; } $this->data = $data; } private function cropContent(StreamInterface $stream = null) { if (null === $stream) { return ''; } if ($stream->getSize() <= $this->maxBodySize) { return (string) $stream; } $stream->seek(0); return '(partial content)'.$stream->read($this->maxBodySize).'(...)'; } public function getErrors() { return array_filter($this->data, function ($call) { return isset($call['httpCode']) && $call['httpCode'] >= 400; }); } public function getCalls() { return $this->data; } /** * {@inheritdoc} */ public function getName() { return 'guzzle'; } }
💾 保存文件
← 返回文件管理器