Skip to content
This repository was archived by the owner on Jun 28, 2024. It is now read-only.

Commit 6c408a7

Browse files
committed
Merge #1 - Add logger injection
2 parents 29b3103 + 3066c96 commit 6c408a7

12 files changed

+158
-68
lines changed

src/FCMServiceProvider.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
use LaravelFCM\Sender\FCMGroup;
77
use LaravelFCM\Sender\FCMSender;
88
use Illuminate\Support\ServiceProvider;
9+
use Monolog\Logger;
10+
use Monolog\Handler\StreamHandler;
11+
use Monolog\Handler\NullHandler;
912

1013
class FCMServiceProvider extends ServiceProvider
1114
{
@@ -32,23 +35,35 @@ public function register()
3235
return (new FCMManager($app))->driver();
3336
});
3437

38+
$this->app->singleton('fcm.logger', function ($app) {
39+
$logger = new Logger('Laravel-FCM');
40+
if ($app[ 'config' ]->get('fcm.log_enabled', false)) {
41+
$logger->pushHandler(new NullHandler());
42+
} else {
43+
$logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log')));
44+
}
45+
return $logger;
46+
});
47+
3548
$this->app->bind('fcm.group', function ($app) {
3649
$client = $app[ 'fcm.client' ];
3750
$url = $app[ 'config' ]->get('fcm.http.server_group_url');
51+
$logger = $app[ 'fcm.logger' ];
3852

39-
return new FCMGroup($client, $url);
53+
return new FCMGroup($client, $url, $logger);
4054
});
4155

4256
$this->app->bind('fcm.sender', function ($app) {
4357
$client = $app[ 'fcm.client' ];
4458
$url = $app[ 'config' ]->get('fcm.http.server_send_url');
59+
$logger = $app[ 'fcm.logger' ];
4560

46-
return new FCMSender($client, $url);
61+
return new FCMSender($client, $url, $logger);
4762
});
4863
}
4964

5065
public function provides()
5166
{
52-
return ['fcm.client', 'fcm.group', 'fcm.sender'];
67+
return ['fcm.client', 'fcm.group', 'fcm.sender', 'fcm.logger'];
5368
}
5469
}

src/Response/BaseResponse.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use LaravelFCM\Response\Exceptions\ServerResponseException;
77
use LaravelFCM\Response\Exceptions\InvalidRequestException;
88
use LaravelFCM\Response\Exceptions\UnauthorizedRequestException;
9+
use Monolog\Logger;
910

1011
/**
1112
* Class BaseResponse.
@@ -22,13 +23,21 @@ abstract class BaseResponse
2223
*/
2324
protected $logEnabled = false;
2425

26+
/**
27+
* The logger.
28+
*
29+
* @var \Monolog\Logger
30+
*/
31+
protected $logger;
32+
2533
/**
2634
* BaseResponse constructor.
2735
*
2836
* @param \Psr\Http\Message\ResponseInterface $response
2937
*/
30-
public function __construct(ResponseInterface $response)
38+
public function __construct(ResponseInterface $response, Logger $logger)
3139
{
40+
$this->logger = $logger;
3241
$this->isJsonResponse($response);
3342
$this->logEnabled = app('config')->get('fcm.log_enabled', false);
3443
$responseInJson = json_decode($response->getBody(), true);

src/Response/DownstreamResponse.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
namespace LaravelFCM\Response;
44

5-
use Monolog\Logger;
6-
use Monolog\Handler\StreamHandler;
75
use Psr\Http\Message\ResponseInterface;
6+
use Monolog\Logger;
87

98
/**
109
* Class DownstreamResponse.
@@ -99,11 +98,11 @@ class DownstreamResponse extends BaseResponse implements DownstreamResponseContr
9998
* @param \Psr\Http\Message\ResponseInterface $response
10099
* @param array|string $tokens
101100
*/
102-
public function __construct(ResponseInterface $response, $tokens)
101+
public function __construct(ResponseInterface $response, $tokens, Logger $logger)
103102
{
104103
$this->tokens = is_string($tokens) ? [$tokens] : $tokens;
105104

106-
parent::__construct($response);
105+
parent::__construct($response, $logger);
107106
}
108107

109108
/**
@@ -290,15 +289,12 @@ private function needToAddError($index, $result)
290289
*/
291290
protected function logResponse()
292291
{
293-
$logger = new Logger('Laravel-FCM');
294-
$logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log')));
295-
296292
$logMessage = 'notification send to '.count($this->tokens).' devices'.PHP_EOL;
297293
$logMessage .= 'success: '.$this->numberTokensSuccess.PHP_EOL;
298294
$logMessage .= 'failures: '.$this->numberTokensFailure.PHP_EOL;
299295
$logMessage .= 'number of modified token : '.$this->numberTokenModify.PHP_EOL;
300296

301-
$logger->info($logMessage);
297+
$this->logger->info($logMessage);
302298
}
303299

304300
/**

src/Response/GroupResponse.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
namespace LaravelFCM\Response;
44

5-
use Monolog\Logger;
6-
use Monolog\Handler\StreamHandler;
75
use Psr\Http\Message\ResponseInterface;
6+
use Monolog\Logger;
87

98
/**
109
* Class GroupResponse.
@@ -47,10 +46,10 @@ class GroupResponse extends BaseResponse implements GroupResponseContract
4746
* @param \Psr\Http\Message\ResponseInterface $response
4847
* @param string $to
4948
*/
50-
public function __construct(ResponseInterface $response, $to)
49+
public function __construct(ResponseInterface $response, $to, Logger $logger)
5150
{
5251
$this->to = $to;
53-
parent::__construct($response);
52+
parent::__construct($response, $logger);
5453
}
5554

5655
/**
@@ -74,13 +73,10 @@ protected function parseResponse($responseInJson)
7473
*/
7574
protected function logResponse()
7675
{
77-
$logger = new Logger('Laravel-FCM');
78-
$logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log')));
79-
8076
$logMessage = "notification send to group: $this->to";
8177
$logMessage .= "with $this->numberTokensSuccess success and $this->numberTokensFailure";
8278

83-
$logger->info($logMessage);
79+
$this->logger->info($logMessage);
8480
}
8581

8682
/**

src/Response/TopicResponse.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
namespace LaravelFCM\Response;
44

5-
use Monolog\Logger;
65
use LaravelFCM\Message\Topics;
7-
use Monolog\Handler\StreamHandler;
86
use Psr\Http\Message\ResponseInterface;
7+
use Monolog\Logger;
98

109
/**
1110
* Class TopicResponse.
@@ -48,10 +47,10 @@ class TopicResponse extends BaseResponse implements TopicResponseContract
4847
* @param \Psr\Http\Message\ResponseInterface $response
4948
* @param Topics $topic
5049
*/
51-
public function __construct(ResponseInterface $response, Topics $topic)
50+
public function __construct(ResponseInterface $response, Topics $topic, Logger $logger)
5251
{
5352
$this->topic = $topic;
54-
parent::__construct($response);
53+
parent::__construct($response, $logger);
5554
}
5655

5756
/**
@@ -103,9 +102,6 @@ private function parseError($responseInJson)
103102
*/
104103
protected function logResponse()
105104
{
106-
$logger = new Logger('Laravel-FCM');
107-
$logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log')));
108-
109105
$topic = $this->topic->build();
110106

111107
$logMessage = "notification send to topic: ".json_encode($topic);
@@ -115,7 +111,7 @@ protected function logResponse()
115111
$logMessage .= "with error (error : $this->error)";
116112
}
117113

118-
$logger->info($logMessage);
114+
$this->logger->info($logMessage);
119115
}
120116

121117
/**

src/Sender/FCMSender.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function sendTo($to, Options $options = null, PayloadNotification $notifi
4343

4444
$responseGuzzle = $this->post($request);
4545

46-
$responsePartial = new DownstreamResponse($responseGuzzle, $tokens);
46+
$responsePartial = new DownstreamResponse($responseGuzzle, $tokens, $this->logger);
4747
if (!$response) {
4848
$response = $responsePartial;
4949
} else {
@@ -54,7 +54,7 @@ public function sendTo($to, Options $options = null, PayloadNotification $notifi
5454
$request = new Request($to, $options, $notification, $data);
5555
$responseGuzzle = $this->post($request);
5656

57-
$response = new DownstreamResponse($responseGuzzle, $to);
57+
$response = new DownstreamResponse($responseGuzzle, $to, $this->logger);
5858
}
5959

6060
return $response;
@@ -76,7 +76,7 @@ public function sendToGroup($notificationKey, Options $options = null, PayloadNo
7676

7777
$responseGuzzle = $this->post($request);
7878

79-
return new GroupResponse($responseGuzzle, $notificationKey);
79+
return new GroupResponse($responseGuzzle, $notificationKey, $this->logger);
8080
}
8181

8282
/**
@@ -95,7 +95,7 @@ public function sendToTopic(Topics $topics, Options $options = null, PayloadNoti
9595

9696
$responseGuzzle = $this->post($request);
9797

98-
return new TopicResponse($responseGuzzle, $topics);
98+
return new TopicResponse($responseGuzzle, $topics, $this->logger);
9999
}
100100

101101
/**

src/Sender/HTTPSender.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace LaravelFCM\Sender;
44

55
use GuzzleHttp\ClientInterface;
6+
use Monolog\Logger;
67

78
/**
89
* Class BaseSender.
@@ -23,15 +24,23 @@ abstract class HTTPSender
2324
*/
2425
protected $url;
2526

27+
/**
28+
* The logger.
29+
*
30+
* @var \Monolog\Logger
31+
*/
32+
protected $logger;
33+
2634
/**
2735
* Initializes a new sender object.
2836
*
2937
* @param \GuzzleHttp\ClientInterface $client
3038
* @param string $url
3139
*/
32-
public function __construct(ClientInterface $client, $url)
40+
public function __construct(ClientInterface $client, $url, Logger $logger)
3341
{
3442
$this->client = $client;
3543
$this->url = $url;
44+
$this->logger = $logger;
3645
}
3746
}

0 commit comments

Comments
 (0)