first commit
This commit is contained in:
66
vendor/yiisoft/yii2/web/JsonParser.php
vendored
Normal file
66
vendor/yiisoft/yii2/web/JsonParser.php
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license https://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\web;
|
||||
|
||||
use yii\base\InvalidArgumentException;
|
||||
use yii\helpers\Json;
|
||||
|
||||
/**
|
||||
* Parses a raw HTTP request using [[\yii\helpers\Json::decode()]].
|
||||
*
|
||||
* To enable parsing for JSON requests you can configure [[Request::parsers]] using this class:
|
||||
*
|
||||
* ```
|
||||
* 'request' => [
|
||||
* 'parsers' => [
|
||||
* 'application/json' => 'yii\web\JsonParser',
|
||||
* ]
|
||||
* ]
|
||||
* ```
|
||||
*
|
||||
* @author Dan Schmidt <danschmidt5189@gmail.com>
|
||||
* @since 2.0
|
||||
*/
|
||||
class JsonParser implements RequestParserInterface
|
||||
{
|
||||
/**
|
||||
* @var bool whether to return objects in terms of associative arrays.
|
||||
*/
|
||||
public $asArray = true;
|
||||
/**
|
||||
* @var bool whether to throw a [[BadRequestHttpException]] if the body is invalid JSON
|
||||
*/
|
||||
public $throwException = true;
|
||||
|
||||
|
||||
/**
|
||||
* Parses a HTTP request body.
|
||||
* @param string $rawBody the raw HTTP request body.
|
||||
* @param string $contentType the content type specified for the request body.
|
||||
* @return array|\stdClass parameters parsed from the request body
|
||||
* @throws BadRequestHttpException if the body contains invalid json and [[throwException]] is `true`.
|
||||
*/
|
||||
public function parse($rawBody, $contentType)
|
||||
{
|
||||
// converts JSONP to JSON
|
||||
if (strpos($contentType, 'application/javascript') !== false) {
|
||||
$rawBody = preg_filter('/(^[^{]+|[^}]+$)/', '', $rawBody);
|
||||
}
|
||||
|
||||
try {
|
||||
$parameters = Json::decode($rawBody, $this->asArray);
|
||||
return $parameters === null ? [] : $parameters;
|
||||
} catch (InvalidArgumentException $e) {
|
||||
if ($this->throwException) {
|
||||
throw new BadRequestHttpException('Invalid JSON data in request body: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user