diff --git a/.env.example b/.env.example
index 57565b6..b0aa450 100644
--- a/.env.example
+++ b/.env.example
@@ -54,3 +54,6 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
+
+# Sentry
+SENTRY_LARAVEL_DSN=
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index e564f20..352530c 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -14,7 +14,7 @@ use Illuminate\Http\Exceptions\ThrottleRequestsException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
-use Kwaadpepper\ExceptionHandler\Exceptions\ExceptionHandler;
+use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
class Handler extends ExceptionHandler
@@ -46,6 +46,11 @@ class Handler extends ExceptionHandler
*/
public function register()
{
+ $this->reportable(function (\Throwable $e) {
+ if (app()->bound('sentry')) {
+ app('sentry')->captureException($e);
+ }
+ });
}
/**
@@ -68,9 +73,9 @@ class Handler extends ExceptionHandler
/**
* Generate a json response for any apiV2 error case
*
- * @param Request $request
- * @param \Throwable $e
- * @return JsonResponse
+ * @param \Illuminate\Http\Request $request
+ * @param \Throwable $e
+ * @return \Illuminate\Http\JsonResponse
*/
private function handleApiV2Exception(Request $request, \Throwable $e): JsonResponse
{
@@ -148,12 +153,12 @@ class Handler extends ExceptionHandler
/**
* Generate an ApiV2 json response
*
- * @param Request $request
- * @param integer $httpCode
- * @param integer $apiCode
- * @param string $message
- * @param array $data
- * @return JsonResponse
+ * @param \Illuminate\Http\Request $request
+ * @param integer $httpCode
+ * @param integer $apiCode
+ * @param string $message
+ * @param array $data
+ * @return \Illuminate\Http\JsonResponse
*/
private static function getReponse(
Request $request,
diff --git a/app/Lib/Helpers/ExceptionsHelper.php b/app/Lib/Helpers/ExceptionsHelper.php
new file mode 100644
index 0000000..4813275
--- /dev/null
+++ b/app/Lib/Helpers/ExceptionsHelper.php
@@ -0,0 +1,190 @@
+setModules([]);
+ $event->setOsContext(null);
+
+ /** @var \Sentry\ExceptionDataBag[] */
+ $exceptionBag = [];
+ foreach ($event->getExceptions() as $exceptionDataBag) {
+ $exceptionBag[] = self::getAnonymizedSentryException($exceptionDataBag);
+ }
+ $event->setExceptions($exceptionBag);
+ return $event;
+ }
+
+ /**
+ * Anonimize Sentry Exception bag
+ *
+ * @param \Sentry\ExceptionDataBag $exceptionDataBag
+ * @return \Sentry\ExceptionDataBag
+ */
+ private static function getAnonymizedSentryException(
+ \Sentry\ExceptionDataBag $exceptionDataBag
+ ): \Sentry\ExceptionDataBag {
+ $exceptionDataBag->setValue(self::getAnonymizedMessage($exceptionDataBag->getValue()));
+ if ($stackTrace = $exceptionDataBag->getStacktrace()) {
+ $exceptionDataBag->setStacktrace(self::getAnonymizedSentryStackTrace($stackTrace));
+ }
+ return $exceptionDataBag;
+ }
+
+ /**
+ * Anonymise sentry stacktrace
+ *
+ * @param \Sentry\Stacktrace $stackTrace
+ * @return \Sentry\Stacktrace
+ */
+ private static function getAnonymizedSentryStackTrace(\Sentry\Stacktrace $stackTrace): \Sentry\Stacktrace
+ {
+ /** @var \Sentry\Frame[] */
+ $frames = \array_reverse($stackTrace->getFrames(), true);
+ $i = \count($frames) - 1;
+ // * Remove all but keep first (index.php).
+ while ($i-- > 0) {
+ $stackTrace->removeFrame(count($stackTrace->getFrames()) - 1);
+ }
+ foreach ($frames as $index => $frame) {
+ $frame->setPostContext([]);
+ $frame->setPreContext([]);
+ $frame->setContextLine('');
+ $frame->setVars(self::getAnonymizedSentryParams($frame->getVars()));
+ $stackTrace->addFrame($frame);
+ if ($index === 0) {
+ $stackTrace->removeFrame(count($stackTrace->getFrames()) - 1);
+ }
+ }
+ return $stackTrace;
+ }
+
+ /**
+ * Get anonymized sentry params
+ *
+ * @param mixed[] $params
+ * @return string[]
+ */
+ private static function getAnonymizedSentryParams(array $params): array
+ {
+ foreach ($params as &$param) {
+ $type = \strtolower(\gettype($param));
+ if (\is_string($param)) {
+ $type = \explode(' ', \trim(strtolower($param)))[0] ?? null;
+ }
+ switch (true) {
+ case $type === 'lambda':
+ case $type === 'object':
+ continue 2;
+ case $type === 'array' and \is_array($param):
+ $param = sprintf('Array(%d)', \count($param));
+ continue 2;
+ default:
+ if (\is_numeric($param)) {
+ $param = \ucfirst($type);
+ continue 2;
+ }
+ if (\is_string($param)) {
+ $param = sprintf('String(%d)', \strlen($param));
+ continue 2;
+ }
+ } //end switch
+ } //end foreach
+ return $params;
+ }
+
+
+ /**
+ * Anonymize at least Sql queries
+ *
+ * @param string $message
+ * @return string
+ */
+ public static function getAnonymizedMessage(string $message): string
+ {
+ $message = \preg_replace('/^(.*)( \(SQL:.*\))$/', '$1', $message) ?? $message;
+ if ($sqlPos = \strpos($message, 'to use near')) {
+ $message = \mb_strcut($message, 0, $sqlPos);
+ }
+ return $message;
+ }
+
+ /**
+ * Anonymize stack trace
+ *
+ * @param \Throwable $e
+ * @return string
+ */
+ public static function getAnonymizedStackTrace(\Throwable $e): string
+ {
+ $projectPath = \realpath(\sprintf('%s/../', \app_path()));
+ $traceStack = $e->getTrace();
+ $traceStr = '';
+ $maxStackStage = 0;
+ foreach ($traceStack as $stackStage => $stack) {
+ $maxStackStage = $stackStage;
+ $traceStr .= \sprintf(
+ '#%s %s(%d): ',
+ $stackStage,
+ str_replace($projectPath, '', $stack['file'] ?? ''),
+ $stack['line'] ?? ''
+ );
+ if (isset($stack['class'])) {
+ $traceStr .= "{$stack['class']}->{$stack['function']}(";
+ if (isset($stack['args'])) {
+ $traceStr .= self::handleArgs($stack);
+ }
+ $traceStr .= ")\n";
+ } elseif (isset($stack['function'])) {
+ $traceStr .= "{$stack['function']}(";
+ if (isset($stack['args'])) {
+ $traceStr .= self::handleArgs($stack);
+ }
+ $traceStr .= ")\n";
+ }
+ } //end foreach
+ $maxStackStage++;
+ $traceStr .= "#$maxStackStage {main}";
+ return $traceStr;
+ }
+
+ /**
+ * Handle Args
+ *
+ * @param array $stack
+ * @return string
+ */
+ public static function handleArgs(array $stack): string
+ {
+ $traceArgs = '';
+ $argsCount = count($stack['args']);
+ for ($i = 0; $i < $argsCount; $i++) {
+ $type = \gettype($stack['args'][$i]);
+ switch ($type) {
+ case 'object':
+ $traceArgs .= sprintf('Object(%s)', \get_class($stack['args'][$i]));
+ break;
+ case 'array':
+ $traceArgs .= sprintf('Array(%d)', \count($stack['args'][$i]));
+ break;
+ case 'string':
+ $traceArgs .= sprintf('String(%d)', \strlen($stack['args'][$i]));
+ break;
+ default:
+ $traceArgs .= \gettype($stack['args'][$i]);
+ }
+ $traceArgs .= ($i !== ($argsCount - 1) ? ',' : '');
+ }
+ return $traceArgs;
+ }
+}
diff --git a/composer.json b/composer.json
index c70db87..143c29a 100644
--- a/composer.json
+++ b/composer.json
@@ -17,13 +17,13 @@
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"kwaadpepper/enum": "^2.1",
- "kwaadpepper/exception-handler": "^0.0.6",
"laravel-lang/lang": "~7.0",
"laravel/framework": "^8.39",
"laravel/tinker": "^2.5",
"league/csv": "^9.7",
"propaganistas/laravel-phone": "^4.3",
"rennokki/laravel-eloquent-query-cache": "^3.0",
+ "sentry/sentry-laravel": "^3.4",
"spatie/laravel-mix-preload": "^1.2"
},
"require-dev": {
@@ -47,7 +47,8 @@
},
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true,
- "composer/package-versions-deprecated": true
+ "composer/package-versions-deprecated": true,
+ "php-http/discovery": true
}
},
"extra": {
diff --git a/composer.lock b/composer.lock
index 0146acb..20ee4b0 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ceff538e9083e5fcfd91d183dcd2677b",
+ "content-hash": "cad4ee27524c77b2cf44d2567bd19b33",
"packages": [
{
"name": "arondeparon/laravel-request-sanitizer",
@@ -253,6 +253,72 @@
],
"time": "2021-08-15T20:50:18+00:00"
},
+ {
+ "name": "clue/stream-filter",
+ "version": "v1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/clue/stream-filter.git",
+ "reference": "d6169430c7731d8509da7aecd0af756a5747b78e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e",
+ "reference": "d6169430c7731d8509da7aecd0af756a5747b78e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "Clue\\StreamFilter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering"
+ }
+ ],
+ "description": "A simple and modern approach to stream filtering in PHP",
+ "homepage": "https://github.com/clue/php-stream-filter",
+ "keywords": [
+ "bucket brigade",
+ "callback",
+ "filter",
+ "php_user_filter",
+ "stream",
+ "stream_filter_append",
+ "stream_filter_register"
+ ],
+ "support": {
+ "issues": "https://github.com/clue/stream-filter/issues",
+ "source": "https://github.com/clue/stream-filter/tree/v1.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://clue.engineering/support",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/clue",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-21T13:15:14+00:00"
+ },
{
"name": "diglactic/laravel-breadcrumbs",
"version": "v8.1.1",
@@ -1660,6 +1726,123 @@
],
"time": "2022-06-20T21:43:11+00:00"
},
+ {
+ "name": "http-interop/http-factory-guzzle",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/http-interop/http-factory-guzzle.git",
+ "reference": "8f06e92b95405216b237521cc64c804dd44c4a81"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81",
+ "reference": "8f06e92b95405216b237521cc64c804dd44c4a81",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/psr7": "^1.7||^2.0",
+ "php": ">=7.3",
+ "psr/http-factory": "^1.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "^1.0"
+ },
+ "require-dev": {
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^9.5"
+ },
+ "suggest": {
+ "guzzlehttp/psr7": "Includes an HTTP factory starting in version 2.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Http\\Factory\\Guzzle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "An HTTP Factory using Guzzle PSR7",
+ "keywords": [
+ "factory",
+ "http",
+ "psr-17",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/http-interop/http-factory-guzzle/issues",
+ "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0"
+ },
+ "time": "2021-07-21T13:50:14+00:00"
+ },
+ {
+ "name": "jean85/pretty-package-versions",
+ "version": "2.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Jean85/pretty-package-versions.git",
+ "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+ "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": "^2.0.0",
+ "php": "^7.1|^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.17",
+ "jean85/composer-provided-replaced-stub-package": "^1.0",
+ "phpstan/phpstan": "^0.12.66",
+ "phpunit/phpunit": "^7.5|^8.5|^9.4",
+ "vimeo/psalm": "^4.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Jean85\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alessandro Lai",
+ "email": "alessandro.lai85@gmail.com"
+ }
+ ],
+ "description": "A library to get pretty versions strings of installed dependencies",
+ "keywords": [
+ "composer",
+ "package",
+ "release",
+ "versions"
+ ],
+ "support": {
+ "issues": "https://github.com/Jean85/pretty-package-versions/issues",
+ "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
+ },
+ "time": "2021-10-08T21:21:46+00:00"
+ },
{
"name": "kwaadpepper/enum",
"version": "2.1.4",
@@ -1720,67 +1903,6 @@
},
"time": "2022-07-28T14:19:44+00:00"
},
- {
- "name": "kwaadpepper/exception-handler",
- "version": "0.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/Kwaadpepper/exception-handler.git",
- "reference": "9e17a9c0a43755d91cb98717e3fc7ba17db0c1c7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Kwaadpepper/exception-handler/zipball/9e17a9c0a43755d91cb98717e3fc7ba17db0c1c7",
- "reference": "9e17a9c0a43755d91cb98717e3fc7ba17db0c1c7",
- "shasum": ""
- },
- "require": {
- "illuminate/support": "~7|~8",
- "laravel/framework": "~7|~8"
- },
- "require-dev": {
- "orchestra/testbench": "^6.13",
- "phpunit/phpunit": "~9.0",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Kwaadpepper\\ExceptionHandler\\ExceptionHandlerServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Kwaadpepper\\ExceptionHandler\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jérémy Munsch",
- "email": "github@jeremydev.ovh",
- "homepage": "https://jeremydev.ovh"
- }
- ],
- "description": "Send emails when exceptions occurs",
- "homepage": "https://github.com/kwaadpepper/exception-handler",
- "keywords": [
- "email",
- "exception",
- "laravel",
- "policies"
- ],
- "support": {
- "issues": "https://github.com/Kwaadpepper/exception-handler/issues",
- "source": "https://github.com/Kwaadpepper/exception-handler/tree/0.0.6"
- },
- "time": "2021-12-01T08:54:11+00:00"
- },
{
"name": "laravel-lang/lang",
"version": "7.0.9",
@@ -2770,6 +2892,84 @@
},
"time": "2022-05-31T20:59:12+00:00"
},
+ {
+ "name": "nyholm/psr7",
+ "version": "1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Nyholm/psr7.git",
+ "reference": "e874c8c4286a1e010fb4f385f3a55ac56a05cc93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Nyholm/psr7/zipball/e874c8c4286a1e010fb4f385f3a55ac56a05cc93",
+ "reference": "e874c8c4286a1e010fb4f385f3a55ac56a05cc93",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "php-http/message-factory": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0"
+ },
+ "provide": {
+ "php-http/message-factory-implementation": "1.0",
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "http-interop/http-factory-tests": "^0.9",
+ "php-http/psr7-integration-tests": "^1.0",
+ "phpunit/phpunit": "^7.5 || 8.5 || 9.4",
+ "symfony/error-handler": "^4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nyholm\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com"
+ },
+ {
+ "name": "Martijn van der Ven",
+ "email": "martijn@vanderven.se"
+ }
+ ],
+ "description": "A fast PHP7 implementation of PSR-7",
+ "homepage": "https://tnyholm.se",
+ "keywords": [
+ "psr-17",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/Nyholm/psr7/issues",
+ "source": "https://github.com/Nyholm/psr7/tree/1.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Zegnat",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nyholm",
+ "type": "github"
+ }
+ ],
+ "time": "2023-04-17T16:03:48+00:00"
+ },
{
"name": "opis/closure",
"version": "3.6.3",
@@ -2835,6 +3035,391 @@
},
"time": "2022-01-27T09:35:39+00:00"
},
+ {
+ "name": "php-http/client-common",
+ "version": "2.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/client-common.git",
+ "reference": "880509727a447474d2a71b7d7fa5d268ddd3db4b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/client-common/zipball/880509727a447474d2a71b7d7fa5d268ddd3db4b",
+ "reference": "880509727a447474d2a71b7d7fa5d268ddd3db4b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "php-http/httplug": "^2.0",
+ "php-http/message": "^1.6",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0 || ^2.0",
+ "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0",
+ "symfony/polyfill-php80": "^1.17"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1.1",
+ "guzzlehttp/psr7": "^1.4",
+ "nyholm/psr7": "^1.2",
+ "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1",
+ "phpspec/prophecy": "^1.10.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.33 || ^9.6.7"
+ },
+ "suggest": {
+ "ext-json": "To detect JSON responses with the ContentTypePlugin",
+ "ext-libxml": "To detect XML responses with the ContentTypePlugin",
+ "php-http/cache-plugin": "PSR-6 Cache plugin",
+ "php-http/logger-plugin": "PSR-3 Logger plugin",
+ "php-http/stopwatch-plugin": "Symfony Stopwatch plugin"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Http\\Client\\Common\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Common HTTP Client implementations and tools for HTTPlug",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "client",
+ "common",
+ "http",
+ "httplug"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/client-common/issues",
+ "source": "https://github.com/php-http/client-common/tree/2.7.0"
+ },
+ "time": "2023-05-17T06:46:59+00:00"
+ },
+ {
+ "name": "php-http/discovery",
+ "version": "1.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/discovery.git",
+ "reference": "1856a119a0b0ba8da8b5c33c080aa7af8fac25b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/discovery/zipball/1856a119a0b0ba8da8b5c33c080aa7af8fac25b4",
+ "reference": "1856a119a0b0ba8da8b5c33c080aa7af8fac25b4",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "nyholm/psr7": "<1.0",
+ "zendframework/zend-diactoros": "*"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "*",
+ "psr/http-factory-implementation": "*",
+ "psr/http-message-implementation": "*"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "graham-campbell/phpspec-skip-example-extension": "^5.0",
+ "php-http/httplug": "^1.0 || ^2.0",
+ "php-http/message-factory": "^1.0",
+ "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3",
+ "symfony/phpunit-bridge": "^6.2"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Http\\Discovery\\Composer\\Plugin",
+ "plugin-optional": true
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Discovery\\": "src/"
+ },
+ "exclude-from-classmap": [
+ "src/Composer/Plugin.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "adapter",
+ "client",
+ "discovery",
+ "factory",
+ "http",
+ "message",
+ "psr17",
+ "psr7"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/discovery/issues",
+ "source": "https://github.com/php-http/discovery/tree/1.19.0"
+ },
+ "time": "2023-06-19T08:45:36+00:00"
+ },
+ {
+ "name": "php-http/httplug",
+ "version": "2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/httplug.git",
+ "reference": "625ad742c360c8ac580fcc647a1541d29e257f67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67",
+ "reference": "625ad742c360c8ac580fcc647a1541d29e257f67",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "php-http/promise": "^1.1",
+ "psr/http-client": "^1.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "require-dev": {
+ "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0",
+ "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eric GELOEN",
+ "email": "geloen.eric@gmail.com"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "HTTPlug, the HTTP client abstraction for PHP",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "client",
+ "http"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/httplug/issues",
+ "source": "https://github.com/php-http/httplug/tree/2.4.0"
+ },
+ "time": "2023-04-14T15:10:03+00:00"
+ },
+ {
+ "name": "php-http/message",
+ "version": "1.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/message.git",
+ "reference": "2ccee04a28c3d98eb3f2b85ce1e2fcff70c0e63b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/message/zipball/2ccee04a28c3d98eb3f2b85ce1e2fcff70c0e63b",
+ "reference": "2ccee04a28c3d98eb3f2b85ce1e2fcff70c0e63b",
+ "shasum": ""
+ },
+ "require": {
+ "clue/stream-filter": "^1.5",
+ "php": "^7.1 || ^8.0",
+ "php-http/message-factory": "^1.0.2",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "provide": {
+ "php-http/message-factory-implementation": "1.0"
+ },
+ "require-dev": {
+ "ergebnis/composer-normalize": "^2.6",
+ "ext-zlib": "*",
+ "guzzlehttp/psr7": "^1.0",
+ "laminas/laminas-diactoros": "^2.0",
+ "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1",
+ "slim/slim": "^3.0"
+ },
+ "suggest": {
+ "ext-zlib": "Used with compressor/decompressor streams",
+ "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
+ "laminas/laminas-diactoros": "Used with Diactoros Factories",
+ "slim/slim": "Used with Slim Framework PSR-7 implementation"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/filters.php"
+ ],
+ "psr-4": {
+ "Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "HTTP Message related tools",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/message/issues",
+ "source": "https://github.com/php-http/message/tree/1.14.0"
+ },
+ "time": "2023-04-14T14:26:18+00:00"
+ },
+ {
+ "name": "php-http/message-factory",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/message-factory.git",
+ "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/message-factory/zipball/4d8778e1c7d405cbb471574821c1ff5b68cc8f57",
+ "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Factory interfaces for PSR-7 HTTP Message",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "stream",
+ "uri"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/message-factory/issues",
+ "source": "https://github.com/php-http/message-factory/tree/1.1.0"
+ },
+ "abandoned": "psr/http-factory",
+ "time": "2023-04-14T14:16:17+00:00"
+ },
+ {
+ "name": "php-http/promise",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/promise.git",
+ "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "friends-of-phpspec/phpspec-code-coverage": "^4.3.2",
+ "phpspec/phpspec": "^5.1.2 || ^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Joel Wurtz",
+ "email": "joel.wurtz@gmail.com"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Promise used for asynchronous HTTP requests",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/promise/issues",
+ "source": "https://github.com/php-http/promise/tree/1.1.0"
+ },
+ "time": "2020-07-07T09:29:14+00:00"
+ },
{
"name": "phpoption/phpoption",
"version": "1.9.0",
@@ -3748,6 +4333,258 @@
],
"time": "2022-02-12T19:37:00+00:00"
},
+ {
+ "name": "sentry/sdk",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-php-sdk.git",
+ "reference": "7f1e04a5380a91e41a1a68c363ec19f88619a870"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/7f1e04a5380a91e41a1a68c363ec19f88619a870",
+ "reference": "7f1e04a5380a91e41a1a68c363ec19f88619a870",
+ "shasum": ""
+ },
+ "require": {
+ "http-interop/http-factory-guzzle": "^1.0",
+ "sentry/sentry": "^3.18",
+ "symfony/http-client": "^4.3|^5.0|^6.0"
+ },
+ "type": "metapackage",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.",
+ "homepage": "http://sentry.io",
+ "keywords": [
+ "crash-reporting",
+ "crash-reports",
+ "error-handler",
+ "error-monitoring",
+ "log",
+ "logging",
+ "sentry"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-php-sdk/issues",
+ "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2023-05-22T16:02:39+00:00"
+ },
+ {
+ "name": "sentry/sentry",
+ "version": "3.18.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-php.git",
+ "reference": "c634615c09a69bfdc3bb5f6ffeee78db3711167c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/c634615c09a69bfdc3bb5f6ffeee78db3711167c",
+ "reference": "c634615c09a69bfdc3bb5f6ffeee78db3711167c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/promises": "^1.4",
+ "jean85/pretty-package-versions": "^1.5|^2.0.4",
+ "php": "^7.2|^8.0",
+ "php-http/async-client-implementation": "^1.0",
+ "php-http/client-common": "^1.5|^2.0",
+ "php-http/discovery": "^1.15",
+ "php-http/httplug": "^1.1|^2.0",
+ "php-http/message": "^1.5",
+ "php-http/message-factory": "^1.1",
+ "psr/http-factory": "^1.0",
+ "psr/http-factory-implementation": "^1.0",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0",
+ "symfony/polyfill-php80": "^1.17"
+ },
+ "conflict": {
+ "php-http/client-common": "1.8.0",
+ "raven/raven": "*"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.19|3.4.*",
+ "guzzlehttp/psr7": "^1.8.4|^2.1.1",
+ "http-interop/http-factory-guzzle": "^1.0",
+ "monolog/monolog": "^1.6|^2.0|^3.0",
+ "nikic/php-parser": "^4.10.3",
+ "php-http/mock-client": "^1.3",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^8.5.14|^9.4",
+ "symfony/phpunit-bridge": "^5.2|^6.0",
+ "vimeo/psalm": "^4.17"
+ },
+ "suggest": {
+ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.13.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Sentry\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "A PHP SDK for Sentry (http://sentry.io)",
+ "homepage": "http://sentry.io",
+ "keywords": [
+ "crash-reporting",
+ "crash-reports",
+ "error-handler",
+ "error-monitoring",
+ "log",
+ "logging",
+ "sentry"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-php/issues",
+ "source": "https://github.com/getsentry/sentry-php/tree/3.18.2"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2023-05-17T10:56:54+00:00"
+ },
+ {
+ "name": "sentry/sentry-laravel",
+ "version": "3.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-laravel.git",
+ "reference": "516df9df80414a71fa5464039746e8e98b066e09"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/516df9df80414a71fa5464039746e8e98b066e09",
+ "reference": "516df9df80414a71fa5464039746e8e98b066e09",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/support": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0",
+ "nyholm/psr7": "^1.0",
+ "php": "^7.2 | ^8.0",
+ "sentry/sdk": "^3.3",
+ "sentry/sentry": "^3.16",
+ "symfony/psr-http-message-bridge": "^1.0 | ^2.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.11",
+ "laravel/framework": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0",
+ "mockery/mockery": "^1.3",
+ "orchestra/testbench": "^4.7 | ^5.1 | ^6.0 | ^7.0 | ^8.0",
+ "phpunit/phpunit": "^8.4 | ^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev",
+ "dev-0.x": "0.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Sentry\\Laravel\\ServiceProvider",
+ "Sentry\\Laravel\\Tracing\\ServiceProvider"
+ ],
+ "aliases": {
+ "Sentry": "Sentry\\Laravel\\Facade"
+ }
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sentry\\Laravel\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "Laravel SDK for Sentry (https://sentry.io)",
+ "homepage": "https://sentry.io",
+ "keywords": [
+ "crash-reporting",
+ "crash-reports",
+ "error-handler",
+ "error-monitoring",
+ "laravel",
+ "log",
+ "logging",
+ "sentry"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-laravel/issues",
+ "source": "https://github.com/getsentry/sentry-laravel/tree/3.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2023-05-31T10:43:06+00:00"
+ },
{
"name": "spatie/laravel-mix-preload",
"version": "1.3.0",
@@ -4422,6 +5259,175 @@
],
"time": "2022-07-29T07:37:50+00:00"
},
+ {
+ "name": "symfony/http-client",
+ "version": "v5.4.25",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "ccbb572627466f03a3d7aa1b23483787f5969afc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/ccbb572627466f03a3d7aa1b23483787f5969afc",
+ "reference": "ccbb572627466f03a3d7aa1b23483787f5969afc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/http-client-contracts": "^2.4",
+ "symfony/polyfill-php73": "^1.11",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.0|^2|^3"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "2.4"
+ },
+ "require-dev": {
+ "amphp/amp": "^2.5",
+ "amphp/http-client": "^4.2.1",
+ "amphp/http-tunnel": "^1.0",
+ "amphp/socket": "^1.1",
+ "guzzlehttp/promises": "^1.4",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "php-http/message-factory": "^1.0",
+ "psr/http-client": "^1.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpClient\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "http"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/http-client/tree/v5.4.25"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-06-21T14:44:30+00:00"
+ },
+ {
+ "name": "symfony/http-client-contracts",
+ "version": "v2.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70",
+ "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "suggest": {
+ "symfony/http-client-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\HttpClient\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to HTTP clients",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-04-12T15:48:08+00:00"
+ },
{
"name": "symfony/http-foundation",
"version": "v5.4.11",
@@ -4690,6 +5696,75 @@
],
"time": "2022-07-20T11:34:24+00:00"
},
+ {
+ "name": "symfony/options-resolver",
+ "version": "v5.4.21",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
+ "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an improved replacement for the array_replace PHP function",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.21"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-02-14T08:03:56+00:00"
+ },
{
"name": "symfony/polyfill-ctype",
"version": "v1.26.0",
@@ -5569,6 +6644,94 @@
],
"time": "2022-06-27T16:58:25+00:00"
},
+ {
+ "name": "symfony/psr-http-message-bridge",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/psr-http-message-bridge.git",
+ "reference": "28a732c05bbad801304ad5a5c674cf2970508993"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993",
+ "reference": "28a732c05bbad801304ad5a5c674cf2970508993",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/http-message": "^1.0 || ^2.0",
+ "symfony/http-foundation": "^5.4 || ^6.0"
+ },
+ "require-dev": {
+ "nyholm/psr7": "^1.1",
+ "psr/log": "^1.1 || ^2 || ^3",
+ "symfony/browser-kit": "^5.4 || ^6.0",
+ "symfony/config": "^5.4 || ^6.0",
+ "symfony/event-dispatcher": "^5.4 || ^6.0",
+ "symfony/framework-bundle": "^5.4 || ^6.0",
+ "symfony/http-kernel": "^5.4 || ^6.0",
+ "symfony/phpunit-bridge": "^6.2"
+ },
+ "suggest": {
+ "nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\PsrHttpMessage\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "PSR HTTP message bridge",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr-17",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/symfony/psr-http-message-bridge/issues",
+ "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-04-21T08:40:19+00:00"
+ },
{
"name": "symfony/routing",
"version": "v5.4.11",
@@ -6929,65 +8092,6 @@
},
"time": "2020-07-09T08:09:16+00:00"
},
- {
- "name": "jean85/pretty-package-versions",
- "version": "2.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/Jean85/pretty-package-versions.git",
- "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
- "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
- "shasum": ""
- },
- "require": {
- "composer-runtime-api": "^2.0.0",
- "php": "^7.1|^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.17",
- "jean85/composer-provided-replaced-stub-package": "^1.0",
- "phpstan/phpstan": "^0.12.66",
- "phpunit/phpunit": "^7.5|^8.5|^9.4",
- "vimeo/psalm": "^4.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Jean85\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Alessandro Lai",
- "email": "alessandro.lai85@gmail.com"
- }
- ],
- "description": "A library to get pretty versions strings of installed dependencies",
- "keywords": [
- "composer",
- "package",
- "release",
- "versions"
- ],
- "support": {
- "issues": "https://github.com/Jean85/pretty-package-versions/issues",
- "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
- },
- "time": "2021-10-08T21:21:46+00:00"
- },
{
"name": "mockery/mockery",
"version": "1.5.0",
diff --git a/config/exception-handler.php b/config/exception-handler.php
deleted file mode 100644
index e6bd69b..0000000
--- a/config/exception-handler.php
+++ /dev/null
@@ -1,17 +0,0 @@
- !config('app.debug'),
-
- /**
- * Put a developper secured mailbox in here
- * so you can receive email if things go mad
- */
- 'contactsList' => [
- env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')
- ]
-];
diff --git a/config/sentry.php b/config/sentry.php
new file mode 100644
index 0000000..29627fe
--- /dev/null
+++ b/config/sentry.php
@@ -0,0 +1,61 @@
+ env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN')),
+
+ // The release version of your application.
+ // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')).
+ 'release' => env('SENTRY_RELEASE'),
+
+ // When left empty or `null` the Laravel environment will be used.
+ 'environment' => env('SENTRY_ENVIRONMENT'),
+
+ 'breadcrumbs' => [
+ // Capture Laravel logs in breadcrumbs.
+ 'logs' => true,
+
+ // Capture SQL queries in breadcrumbs.
+ 'sql_queries' => true,
+
+ // Capture bindings on SQL queries logged in breadcrumbs.
+ 'sql_bindings' => false,
+
+ // Capture queue job information in breadcrumbs.
+ 'queue_info' => true,
+
+ // Capture command information in breadcrumbs.
+ 'command_info' => true,
+ ],
+
+ 'tracing' => [
+ // Trace queue jobs as their own transactions.
+ 'queue_job_transactions' => env('SENTRY_TRACE_QUEUE_ENABLED', false),
+
+ // Capture queue jobs as spans when executed on the sync driver.
+ 'queue_jobs' => true,
+
+ // Capture SQL queries as spans.
+ 'sql_queries' => true,
+
+ // Try to find out where the SQL query originated from and add it to the query spans.
+ 'sql_origin' => true,
+
+ // Capture views as spans.
+ 'views' => true,
+
+ // Indicates if the tracing integrations supplied by Sentry should be loaded.
+ 'default_integrations' => true,
+
+ // Indicates that requests without a matching route should be traced.
+ 'missing_routes' => false,
+ ],
+
+ // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#send-default-pii.
+ 'send_default_pii' => env('SENTRY_SEND_DEFAULT_PII', false),
+
+ // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#traces-sample-rate.
+ 'traces_sample_rate' => env('SENTRY_TRACES_SAMPLE_RATE') === null ? null : (float)env('SENTRY_TRACES_SAMPLE_RATE'),
+
+ 'before_send' => [\App\Lib\Helpers\ExceptionsHelper::class, 'sentryEventHandler'],
+];
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index f48ea57..1258fff 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -31,7 +31,7 @@
@include('modules.script-constants')
@include('modules.script-routes')
-
+
@stack('scripts')