Files
faveo/vendor/bugsnag/bugsnag/src/Breadcrumbs/Breadcrumb.php
RafficMohammed 774eed8b0e laravel-6 support
2023-01-08 01:17:22 +05:30

186 lines
3.7 KiB
PHP

<?php
namespace Bugsnag\Breadcrumbs;
use Bugsnag\DateTime\Date;
use InvalidArgumentException;
class Breadcrumb
{
/**
* The navigation type.
*
* @var string
*/
const NAVIGATION_TYPE = 'navigation';
/**
* The request type.
*
* @var string
*/
const REQUEST_TYPE = 'request';
/**
* The process type.
*
* @var string
*/
const PROCESS_TYPE = 'process';
/**
* The log type.
*
* @var string
*/
const LOG_TYPE = 'log';
/**
* The user type.
*
* @var string
*/
const USER_TYPE = 'user';
/**
* The state type.
*
* @var string
*/
const STATE_TYPE = 'state';
/**
* The error type.
*
* @var string
*/
const ERROR_TYPE = 'error';
/**
* The manual type.
*
* @var string
*/
const MANUAL_TYPE = 'manual';
/**
* The maximum size of the breadcrumb.
*
* @var int
*/
const MAX_SIZE = 4096;
/**
* The timestamp of the breadcrumb.
*
* @var string
*/
protected $timestamp;
/**
* The name of the breadcrumb.
*
* @var string
*/
protected $name;
/**
* The type of the breadcrumb.
*
* @var string
*/
protected $type;
/**
* The meta data of the breadcrumb.
*
* @var array
*/
protected $metaData;
/**
* Create a new breadcrumb instance.
*
* @param string $name the name of the breadcrumb
* @param string $type the type of breadcrumb
* @param array $metaData additional information about the breadcrumb
*
* @throws \InvalidArgumentException
*
* @return void
*/
public function __construct($name, $type, array $metaData = [])
{
if (!is_string($name)) {
if (is_null($name)) {
$metaData['BreadcrumbError'] = 'NULL provided as the breadcrumb name';
$name = '<no name>';
} else {
$metaData['BreadcrumbError'] = 'Breadcrumb name must be a string - '.gettype($name).' provided instead';
$name = '<no name>';
}
} elseif ($name === '') {
$metaData['BreadcrumbError'] = 'Empty string provided as the breadcrumb name';
$name = '<no name>';
}
$types = static::getTypes();
if (!in_array($type, $types, true)) {
throw new InvalidArgumentException(sprintf('The breadcrumb type must be one of the set of %d standard types.', count($types)));
}
$this->timestamp = Date::now();
$this->name = $name;
$this->type = $type;
$this->metaData = $metaData;
}
/**
* Get the breadcrumb as an array.
*
* Note that this is without the meta data.
*
* @return array
*/
public function toArray()
{
return [
'timestamp' => $this->timestamp,
'name' => $this->name,
'type' => $this->type,
];
}
/**
* Get the breadcrumb meta data.
*
* Note that this still needs sanitizing before use.
*
* @return array
*/
public function getMetaData()
{
return $this->metaData;
}
/**
* Get the set of valid breadrum types.
*
* @return array
*/
public static function getTypes()
{
return [
static::NAVIGATION_TYPE,
static::REQUEST_TYPE,
static::PROCESS_TYPE,
static::LOG_TYPE,
static::USER_TYPE,
static::STATE_TYPE,
static::ERROR_TYPE,
static::MANUAL_TYPE,
];
}
}