Class yii\httpclient\debug\RequestExecuteAction

Inheritanceyii\httpclient\debug\RequestExecuteAction » yii\base\Action
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-httpclient/blob/master/src/debug/RequestExecuteAction.php

RequestExecuteAction executes HTTP request and passes its result to the browser.

Public Methods

Hide inherited methods

Method Description Defined By
run() yii\httpclient\debug\RequestExecuteAction

Protected Methods

Hide inherited methods

Method Description Defined By
createRequestFromLog() Creates an HTTP request instance from log entry. yii\httpclient\debug\RequestExecuteAction

Property Details

Method Details

Hide inherited methods

createRequestFromLog() protected method

Creates an HTTP request instance from log entry.

protected yii\httpclient\Request createRequestFromLog ( $requestLog )
$requestLog string

HTTP request log entry

return yii\httpclient\Request

Request instance.

throws \yii\base\InvalidConfigException

                protected function createRequestFromLog($requestLog)
{
    if (strpos($requestLog, "\n\n")) {
        list($head, $content) = explode("\n\n", $requestLog, 2);
    } else {
        $head = $requestLog;
        $content = null;
    }
    $headers = explode("\n", $head);
    $main = array_shift($headers);
    list($method, $url) = explode(' ', $main, 2);
    return $this->panel->getHttpClient()->createRequest()
        ->setMethod($method)
        ->setUrl($url)
        ->setHeaders($headers)
        ->setContent($content);
}

            
run() public method

public \yii\web\Response run ( $seq, $tag, $passthru false )
$seq string
$tag string
$passthru boolean

Whether to send response to the browser or render it as plain text

throws \yii\web\HttpException
throws \yii\base\InvalidConfigException
throws yii\httpclient\Exception

                public function run($seq, $tag, $passthru = false)
{
    $this->controller->loadData($tag);
    $timings = $this->panel->calculateTimings();
    if (!isset($timings[$seq])) {
        throw new HttpException(404, 'Log message not found.');
    }
    $requestInfo = $timings[$seq]['info'];
    $httpRequest = $this->createRequestFromLog($requestInfo);
    $httpResponse = $httpRequest->send();
    $httpResponse->getHeaders()->get('content-type');
    $response = new Response([
        'format' => Response::FORMAT_RAW,
    ]);
    if ($passthru) {
        foreach ($httpResponse->getHeaders() as $name => $value) {
            $response->getHeaders()->set($name, $value);
        }
        $response->content = $httpResponse->content;
        return $response;
    }
    $response->getHeaders()->add('content-type', 'text/plain');
    $response->content = $httpResponse->toString();
    return $response;
}