Skip to content

Commit 44819ce

Browse files
committed
WIP handle Saloon events
1 parent 0e1423d commit 44819ce

File tree

5 files changed

+67
-6
lines changed

5 files changed

+67
-6
lines changed

composer.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@
3838
"orchestra/testbench": "^8.8",
3939
"pestphp/pest": "^2.20",
4040
"pestphp/pest-plugin-arch": "^2.0",
41-
"pestphp/pest-plugin-laravel": "^2.0"
41+
"pestphp/pest-plugin-laravel": "^2.0",
42+
"saloonphp/laravel-http-sender": "^2.0",
43+
"saloonphp/laravel-plugin": "^3.0"
44+
},
45+
"suggest": {
46+
"saloonphp/laravel-plugin": "To support logging of Saloon events (^3.0)"
4247
},
4348
"autoload": {
4449
"psr-4": {

src/Listeners/LogRequestSending.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
use Illuminate\Http\Client\Events\RequestSending;
77
use Illuminate\Support\Facades\Log;
88
use Onlime\LaravelHttpClientGlobalLogger\HttpClientLogger;
9+
use Onlime\LaravelHttpClientGlobalLogger\SaloonHelper;
910
use Psr\Http\Message\RequestInterface;
11+
use Saloon\Laravel\Events\SendingSaloonRequest;
1012

1113
class LogRequestSending
1214
{
1315
/**
1416
* Handle the event if the middleware was not added manually.
1517
*/
16-
public function handle(RequestSending $event): void
18+
public function handle(RequestSending|SendingSaloonRequest $event): void
1719
{
1820
if (! HttpClientLogger::requestMiddlewareWasAdded()) {
1921
$this->handleEvent($event);
@@ -23,10 +25,17 @@ public function handle(RequestSending $event): void
2325
/**
2426
* Handle the event.
2527
*/
26-
public function handleEvent(RequestSending $event): void
28+
public function handleEvent(RequestSending|SendingSaloonRequest $event): void
2729
{
30+
if (! SaloonHelper::shouldBeLogged($event)) {
31+
return;
32+
}
33+
34+
$psrRequest = $event instanceof RequestSending
35+
? $event->request->toPsrRequest()
36+
: $event->pendingRequest->createPsrRequest();
37+
2838
$obfuscate = config('http-client-global-logger.obfuscate.enabled');
29-
$psrRequest = $event->request->toPsrRequest();
3039

3140
if ($obfuscate) {
3241
$psrRequest = $this->obfuscateHeaders($psrRequest);

src/Listeners/LogResponseReceived.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
use GuzzleHttp\MessageFormatter;
66
use Illuminate\Http\Client\Events\ResponseReceived;
77
use Illuminate\Support\Facades\Log;
8+
use Onlime\LaravelHttpClientGlobalLogger\SaloonHelper;
9+
use Saloon\Laravel\Events\SentSaloonRequest;
810

911
class LogResponseReceived
1012
{
@@ -13,11 +15,24 @@ class LogResponseReceived
1315
*
1416
* @return void
1517
*/
16-
public function handle(ResponseReceived $event)
18+
public function handle(ResponseReceived|SentSaloonRequest $event)
1719
{
20+
if (! SaloonHelper::shouldBeLogged($event)) {
21+
return;
22+
}
23+
24+
$psrRequest = $event instanceof ResponseReceived
25+
? $event->request->toPsrRequest()
26+
: $event->pendingRequest->createPsrRequest();
27+
28+
$psrResponse = $event instanceof ResponseReceived
29+
? $event->response->toPsrResponse()
30+
: $event->response->getPsrResponse();
31+
1832
$formatter = new MessageFormatter(config('http-client-global-logger.format.response'));
1933
Log::channel(config('http-client-global-logger.channel'))->info($formatter->format(
20-
$event->request->toPsrRequest(), $event->response->toPsrResponse()
34+
$psrRequest,
35+
$psrResponse
2136
));
2237
}
2338
}

src/Providers/EventServiceProvider.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use Illuminate\Http\Client\Events\ResponseReceived;
88
use Onlime\LaravelHttpClientGlobalLogger\Listeners\LogRequestSending;
99
use Onlime\LaravelHttpClientGlobalLogger\Listeners\LogResponseReceived;
10+
use Saloon\Laravel\Events\SendingSaloonRequest;
11+
use Saloon\Laravel\Events\SentSaloonRequest;
1012

1113
class EventServiceProvider extends BaseEventServiceProvider
1214
{
@@ -16,12 +18,21 @@ class EventServiceProvider extends BaseEventServiceProvider
1618
* @var array
1719
*/
1820
protected $listen = [
21+
// Laravel HTTP Client
1922
RequestSending::class => [
2023
LogRequestSending::class,
2124
],
2225
ResponseReceived::class => [
2326
LogResponseReceived::class,
2427
],
28+
29+
// Saloon
30+
SendingSaloonRequest::class => [
31+
LogRequestSending::class,
32+
],
33+
SentSaloonRequest::class => [
34+
LogResponseReceived::class,
35+
],
2536
];
2637

2738
/**

src/SaloonHelper.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Onlime\LaravelHttpClientGlobalLogger;
4+
5+
use Saloon\HttpSender\HttpSender;
6+
use Saloon\Laravel\Events\SendingSaloonRequest;
7+
use Saloon\Laravel\Events\SentSaloonRequest;
8+
9+
class SaloonHelper
10+
{
11+
public static function shouldBeLogged($event): bool
12+
{
13+
if ($event instanceof SendingSaloonRequest || $event instanceof SentSaloonRequest) {
14+
$saloonUsesHttpSender = config('saloon.default_sender') === HttpSender::class;
15+
16+
return $event->pendingRequest->hasMockClient() || ! $saloonUsesHttpSender;
17+
}
18+
19+
return true;
20+
}
21+
}

0 commit comments

Comments
 (0)