Слияние кода завершено, страница обновится автоматически
<?php
namespace app\threadtask;
use yii\base\InvalidConfigException;
use yii\web\HeaderCollection;
use yii\web\NotFoundHttpException;
use yii\web\RequestParserInterface;
/**
* @inheritdoc
*/
class Request extends \yii\web\Request {
/**
* @var HeaderCollection Collection of request headers.
*/
private $_headers;
/**
* @var string toupper
*/
private $_method;
/**
* @var \HttpRequest
*/
private $_request;
public function setRequest(\HttpRequest $request) {
$this->_request = $request;
}
public function getRequest() {
return $this->_request;
}
/**
* @inheritdoc
*/
public function resolve()
{
$result = \Yii::$app->getUrlManager()->parseRequest($this);
if ($result !== false) {
list($route, $params) = $result;
if ($this->_queryParams === null) {
$this->_request->get = $params + $this->_request->get; // preserve numeric keys
} else {
$this->_queryParams = $params + $this->_queryParams;
}
return [$route, $this->getQueryParams() + $this->getBodyParams()];
}
throw new NotFoundHttpException(\Yii::t('yii', 'Page not found.'));
}
/**
* @inheritdoc
*/
public function getHeaders()
{
if ($this->_headers === null) {
$this->_headers = new HeaderCollection();
foreach ($this->_request->headers as $name => $value) {
$this->_headers->add($name, $value);
}
$this->filterHeaders($this->_headers);
}
return $this->_headers;
}
/**
* @inheritdoc
*/
public function getMethod()
{
if($this->_method !== null) return $this->_method;
if (isset($this->_request->post[$this->methodParam]) && !in_array(strtoupper($this->_request->post[$this->methodParam]), ['GET', 'HEAD', 'OPTIONS'], true)) {
return $this->_method = strtoupper($this->_request->post[$this->methodParam]);
}
if ($this->headers->has('X-Http-Method-Override')) {
return $this->_method = strtoupper($this->headers->get('X-Http-Method-Override'));
}
return $this->_method = strtoupper($this->_request->method);
}
private $_rawBody;
/**
* Returns the raw HTTP request body.
* @return string the request body
*/
public function getRawBody()
{
if ($this->_rawBody === null) {
$this->_rawBody = &$this->_request->buf;
}
return $this->_rawBody;
}
/**
* Sets the raw HTTP request body, this method is mainly used by test scripts to simulate raw HTTP requests.
* @param string $rawBody the request body
*/
public function setRawBody($rawBody)
{
$this->_rawBody = $rawBody;
}
private $_bodyParams;
/**
* @inheritdoc
*/
public function getBodyParams()
{
if ($this->_bodyParams === null) {
if (isset($this->_request->post[$this->methodParam])) {
$this->_bodyParams = $this->_request->post;
unset($this->_bodyParams[$this->methodParam]);
return $this->_bodyParams;
}
$rawContentType = $this->getContentType();
if (($pos = strpos($rawContentType, ';')) !== false) {
// e.g. text/html; charset=UTF-8
$contentType = substr($rawContentType, 0, $pos);
} else {
$contentType = $rawContentType;
}
if (isset($this->parsers[$contentType])) {
$parser = \Yii::createObject($this->parsers[$contentType]);
if (!($parser instanceof RequestParserInterface)) {
throw new InvalidConfigException("The '$contentType' request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
}
$this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
} elseif (isset($this->parsers['*'])) {
$parser = \Yii::createObject($this->parsers['*']);
if (!($parser instanceof RequestParserInterface)) {
throw new InvalidConfigException('The fallback request parser is invalid. It must implement the yii\\web\\RequestParserInterface.');
}
$this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
} elseif ($this->getMethod() === 'POST') {
// PHP has already parsed the body so we have all params in $_POST
$this->_bodyParams = $this->_request->post;
} else {
$this->_bodyParams = [];
mb_parse_str($this->getRawBody(), $this->_bodyParams);
}
}
return $this->_bodyParams;
}
/**
* @inheritdoc
*/
public function setBodyParams($values)
{
$this->_bodyParams = $values;
}
private $_queryParams;
/**
* @inheritdoc
*/
public function getQueryParams()
{
if ($this->_queryParams === null) {
return $this->_request->get;
}
return $this->_queryParams;
}
/**
* @inheritdoc
*/
public function setQueryParams($values)
{
$this->_queryParams = $values;
}
/**
* @inheritdoc
*/
protected function resolveRequestUri()
{
if ($this->headers->has('X-Rewrite-Url')) { // IIS
return $this->headers->get('X-Rewrite-Url');
} else {
return $this->_request->uri;
}
}
/**
* @inheritdoc
*/
public function getQueryString()
{
return $this->_request->query;
}
/**
* @inheritdoc
*/
public function getRemoteIP()
{
return $this->_request->clientAddr;
}
/**
* @inheritdoc
*/
public function getRemoteHost()
{
return $this->_request->clientAddr;
}
/**
* @inheritdoc
*/
public function getAuthCredentials()
{
$auth_token = $this->getHeaders()->get('Authorization');
if ($auth_token !== null && strncasecmp($auth_token, 'basic', 5) === 0) {
$parts = array_map(function ($value) {
return strlen($value) === 0 ? null : $value;
}, explode(':', base64_decode(mb_substr($auth_token, 6)), 2));
if (count($parts) < 2) {
return [$parts[0], null];
}
return $parts;
}
return [null, null];
}
/**
* @inheritdoc
*/
protected function loadCookies()
{
$cookies = [];
if ($this->enableCookieValidation) {
if ($this->cookieValidationKey == '') {
throw new InvalidConfigException(get_class($this) . '::cookieValidationKey must be configured with a secret key.');
}
foreach ($this->_request->cookies as $name => $value) {
if (!is_string($value)) {
continue;
}
$data = \Yii::$app->getSecurity()->validateData($value, $this->cookieValidationKey);
if ($data === false) {
continue;
}
if (defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 70000) {
$data = @unserialize($data, ['allowed_classes' => false]);
} else {
$data = @unserialize($data);
}
if (is_array($data) && isset($data[0], $data[1]) && $data[0] === $name) {
$cookies[$name] = \Yii::createObject([
'class' => 'yii\web\Cookie',
'name' => $name,
'value' => $data[1],
'expire' => null,
]);
}
}
} else {
foreach ($this->_request->cookies as $name => $value) {
$cookies[$name] = \Yii::createObject([
'class' => 'yii\web\Cookie',
'name' => $name,
'value' => $value,
'expire' => null,
]);
}
}
return $cookies;
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )