Skip to content

Commit 9bfab91

Browse files
Merge branch 'symfony4'
2 parents d47dcdb + e2a6260 commit 9bfab91

27 files changed

+527
-323
lines changed

.travis.yml

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,38 @@ php:
44
- 5.6
55
- 7.0
66
- 7.1
7+
- 7.2
8+
9+
env:
10+
- SYMFONY_VERSION=3.4.*
11+
- SYMFONY_VERSION=4.0.*
12+
- SYMFONY_VERSION=4.1.*
13+
14+
sudo: false
15+
dist: trusty
16+
17+
cache:
18+
directories:
19+
- $HOME/.composer/cache/files
20+
21+
matrix:
22+
exclude:
23+
- php: 5.6
24+
env: SYMFONY_VERSION=4.0.*
25+
- php: 5.6
26+
env: SYMFONY_VERSION=4.1.*
27+
- php: 7.0
28+
env: SYMFONY_VERSION=4.0.*
29+
- php: 7.0
30+
env: SYMFONY_VERSION=4.1.*
731

832
before_install:
9-
- curl -s https://getcomposer.org/installer | php
10-
- php composer.phar install
33+
- composer self-update
34+
- composer require -n --prefer-dist "symfony/symfony:${SYMFONY_VERSION}"
1135

1236
script:
1337
- php -v
14-
- php composer.phar test
38+
- composer test
1539

1640
after_success:
17-
- bash <(curl -s https://codecov.io/bash)
41+
- bash <(curl -s https://codecov.io/bash)

DependencyInjection/Configuration.php

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,59 +2,61 @@
22

33
namespace Rollbar\Symfony\RollbarBundle\DependencyInjection;
44

5+
use Rollbar\Config;
6+
use Rollbar\Defaults;
57
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
68
use Symfony\Component\Config\Definition\ConfigurationInterface;
79

810
/**
911
* Class Configuration
12+
*
1013
* @link https://rollbar.com/docs/notifier/rollbar-php/#configuration-reference
14+
*
1115
* @package Rollbar\Symfony\RollbarBundle\DependencyInjection
1216
*/
1317
class Configuration implements ConfigurationInterface
1418
{
1519
/**
16-
* @inheritdoc
20+
* {@inheritdoc}
1721
*/
1822
public function getConfigTreeBuilder()
1923
{
2024
$treeBuilder = new TreeBuilder();
2125
$rollbarConfigNode = $treeBuilder->root(RollbarExtension::ALIAS);
26+
$rollbarConfigNodeChildren = $rollbarConfigNode->children();
2227

23-
// the intendation in this method reflects the structure of the rootNode
24-
// for convenience
25-
26-
foreach (\Rollbar\Config::listOptions() as $option) {
27-
// TODO: this is duplicated code from
28-
// https://github.com/rollbar/rollbar-php-wordpress/blob/master/src/Plugin.php#L359-L366
29-
// It needs to get replaced with a native rollbar/rollbar-php method
30-
// as pointed out here https://github.com/rollbar/rollbar-php/issues/344
31-
$method = lcfirst(str_replace('_', '', ucwords($option, '_')));
32-
33-
// Handle the "branch" exception
34-
switch ($method) {
35-
case "branch":
36-
$method = "gitBranch";
37-
break;
38-
case "includeErrorCodeContext":
39-
$method = 'includeCodeContext';
28+
$configOptions = Config::listOptions();
29+
$rollbarDefaults = Defaults::get();
30+
31+
foreach ($configOptions as $option) {
32+
switch ($option) {
33+
case 'branch':
34+
$method = 'gitBranch';
4035
break;
41-
case "includeExceptionCodeContext":
42-
$method = 'includeExcCodeContext';
36+
default:
37+
$method = $option;
4338
break;
4439
}
45-
46-
$default = method_exists(\Rollbar\Defaults::get(), $method) ?
47-
\Rollbar\Defaults::get()->$method() :
48-
null;
49-
50-
$rollbarConfigNode
51-
->children()
52-
->scalarNode($option)
53-
->defaultValue($default)
54-
->end();
40+
41+
try {
42+
$default = $rollbarDefaults->fromSnakeCase($method);
43+
} catch (\Exception $e) {
44+
$default = null;
45+
}
46+
47+
if (is_array($default)) {
48+
$rollbarConfigNodeChildren
49+
->arrayNode($option)
50+
->scalarPrototype()->end()
51+
->defaultValue($default)
52+
->end();
53+
} else {
54+
$rollbarConfigNodeChildren
55+
->scalarNode($option)
56+
->defaultValue($default)
57+
->end();
58+
}
5559
}
56-
57-
$rollbarConfigNode->end();
5860

5961
return $treeBuilder;
6062
}

DependencyInjection/RollbarExtension.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,17 @@
77
use Symfony\Component\DependencyInjection\Loader;
88
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
99

10-
use Rollbar\Rollbar;
11-
use Rollbar\Monolog\Handler\RollbarHandler;
12-
use Monolog\Logger;
13-
use Psr\Logger\LoggerInterface;
14-
1510
/**
16-
* Class Extension
11+
* Class RollbarExtension
12+
*
1713
* @package Rollbar\Symfony\RollbarBundle\DependencyInjection
1814
*/
1915
class RollbarExtension extends Extension
2016
{
2117
const ALIAS = 'rollbar';
2218

2319
/**
24-
* Loads a specific configuration.
25-
*
26-
* @param array $configs An array of configuration values
27-
* @param ContainerBuilder $container A ContainerBuilder instance
28-
*
29-
* @throws \InvalidArgumentException When provided tag is not defined in this extension
20+
* {@inheritdoc}
3021
*/
3122
public function load(array $configs, ContainerBuilder $container)
3223
{
@@ -42,7 +33,7 @@ public function load(array $configs, ContainerBuilder $container)
4233
}
4334

4435
/**
45-
* @return string
36+
* {@inheritdoc}
4637
*/
4738
public function getAlias()
4839
{

EventListener/AbstractListener.php

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,59 +2,65 @@
22

33
namespace Rollbar\Symfony\RollbarBundle\EventListener;
44

5+
use Monolog\Logger;
6+
use Psr\Log\LoggerInterface;
7+
use Rollbar\Symfony\RollbarBundle\Payload\Generator;
58
use Symfony\Component\DependencyInjection\ContainerInterface;
69
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
7-
use Monolog\Logger;
810
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
911
use Symfony\Component\HttpKernel\KernelEvents;
10-
use Rollbar\Symfony\RollbarBundle\DependencyInjection\SymfonyRollbarExtension;
11-
use Rollbar\Symfony\RollbarBundle\Payload\Generator;
12-
use Psr\Log\LoggerInterface;
1312

1413
/**
1514
* Class AbstractListener
15+
*
1616
* @package Rollbar\Symfony\RollbarBundle\EventListener
1717
*/
1818
abstract class AbstractListener implements EventSubscriberInterface
1919
{
2020
/**
21-
* @var \Monolog\Logger
21+
* @var Logger
2222
*/
2323
protected $logger;
2424

2525
/**
26-
* @var \Symfony\Component\DependencyInjection\ContainerInterface
26+
* @var ContainerInterface
2727
*/
2828
protected $container;
2929

3030
/**
31-
* @var \Rollbar\Symfony\RollbarBundle\Payload\Generator
31+
* @var Generator
3232
*/
3333
protected $generator;
3434

35+
/**
36+
* AbstractListener constructor.
37+
*
38+
* @param ContainerInterface $container
39+
* @param LoggerInterface $logger
40+
* @param Generator $generator
41+
*/
3542
public function __construct(
3643
ContainerInterface $container,
3744
LoggerInterface $logger,
3845
Generator $generator
3946
) {
40-
/**
41-
* @var \Rollbar\Symfony\RollbarBundle\Provider\RollbarHandler $rbProvider
42-
*/
4347
$this->container = $container;
4448
$this->logger = $logger;
4549
$this->generator = $generator;
4650
}
4751

4852
/**
49-
* @return \Monolog\Logger
53+
* Get logger.
54+
*
55+
* @return Logger
5056
*/
5157
public function getLogger()
5258
{
5359
return $this->logger;
5460
}
5561

5662
/**
57-
* @inheritdoc
63+
* {@inheritdoc}
5864
*/
5965
public static function getSubscribedEvents()
6066
{
@@ -64,23 +70,29 @@ public static function getSubscribedEvents()
6470
}
6571

6672
/**
67-
* @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event
73+
* On kernel exception event handler.
74+
*
75+
* @param GetResponseForExceptionEvent $event
6876
*/
6977
public function onKernelException(GetResponseForExceptionEvent $event)
7078
{
7179
// dummy
7280
}
7381

7482
/**
75-
* @return \Symfony\Component\DependencyInjection\ContainerInterface
83+
* Get container.
84+
*
85+
* @return ContainerInterface
7686
*/
7787
public function getContainer()
7888
{
7989
return $this->container;
8090
}
8191

8292
/**
83-
* @return \Rollbar\Symfony\RollbarBundle\Payload\Generator
93+
* Get generator.
94+
*
95+
* @return Generator
8496
*/
8597
public function getGenerator()
8698
{

EventListener/ErrorListener.php

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,24 @@
22

33
namespace Rollbar\Symfony\RollbarBundle\EventListener;
44

5-
use Symfony\Component\DependencyInjection\ContainerInterface;
6-
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
7-
use Rollbar\Symfony\RollbarBundle\DependencyInjection\RollbarExtension;
85
use Psr\Log\LoggerInterface;
6+
use Rollbar\Symfony\RollbarBundle\DependencyInjection\RollbarExtension;
97
use Rollbar\Symfony\RollbarBundle\Payload\Generator;
8+
use Symfony\Component\DependencyInjection\ContainerInterface;
109

10+
/**
11+
* Class ErrorListener
12+
*
13+
* @package Rollbar\Symfony\RollbarBundle\EventListener
14+
*/
1115
class ErrorListener extends AbstractListener
1216
{
1317
/**
1418
* ErrorListener constructor.
1519
*
16-
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container
17-
* @param \Psr\Log\LoggerInterface $logger
18-
* @param \Rollbar\Symfony\RollbarBundle\Payload\Generator $generator
20+
* @param ContainerInterface $container
21+
* @param LoggerInterface $logger
22+
* @param Generator $generator
1923
*/
2024
public function __construct(
2125
ContainerInterface $container,
@@ -73,9 +77,11 @@ public function handleFatalError()
7377

7478
/**
7579
* Wrap php error_get_last() to get more testable code
80+
*
7681
* @link: http://php.net/manual/en/function.error-get-last.php
7782
*
7883
* @return array|null
84+
*
7985
* @codeCoverageIgnore
8086
*/
8187
protected function getLastError()
@@ -86,13 +92,13 @@ protected function getLastError()
8692
/**
8793
* Check do we need to report error or skip
8894
*
89-
* @param $code
95+
* @param mixed $code
9096
*
9197
* @return int
9298
*/
9399
protected function isReportable($code)
94100
{
95-
$code = (int)$code;
101+
$code = (int) $code;
96102
$config = $this->getContainer()->getParameter(RollbarExtension::ALIAS . '.config');
97103

98104
return true

EventListener/ExceptionListener.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
namespace Rollbar\Symfony\RollbarBundle\EventListener;
44

5-
use Symfony\Component\DependencyInjection\ContainerInterface;
65
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
7-
use Psr\Log\LoggerInterface;
8-
use Rollbar\Symfony\RollbarBundle\Payload\Generator;
96

7+
/**
8+
* Class ExceptionListener
9+
*
10+
* @package Rollbar\Symfony\RollbarBundle\EventListener
11+
*/
1012
class ExceptionListener extends AbstractListener
1113
{
1214
/**
1315
* Process exception
1416
*
15-
* @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event
17+
* @param GetResponseForExceptionEvent $event
1618
*/
1719
public function onKernelException(GetResponseForExceptionEvent $event)
1820
{
@@ -28,15 +30,16 @@ public function onKernelException(GetResponseForExceptionEvent $event)
2830
/**
2931
* Handle provided exception
3032
*
31-
* @param $exception
33+
* @param mixed $exception
3234
*/
3335
public function handleException($exception)
3436
{
3537
// generate payload and log data
3638
list($message, $payload) = $this->getGenerator()->getExceptionPayload($exception);
37-
39+
3840
$this->getLogger()->error($message, [
3941
'payload' => $payload,
42+
'exception' => $exception,
4043
]);
4144
}
4245
}

0 commit comments

Comments
 (0)