Skip to content

Commit 507971f

Browse files
committed
log performance events for http requests
Signed-off-by: Robin Appelman <robin@icewind.nl>
1 parent 2abefff commit 507971f

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

lib/private/Http/Client/ClientService.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@
2929
use GuzzleHttp\Client as GuzzleClient;
3030
use GuzzleHttp\HandlerStack;
3131
use GuzzleHttp\Handler\CurlHandler;
32+
use GuzzleHttp\Middleware;
33+
use OCP\Diagnostics\IEventLogger;
3234
use OCP\Http\Client\IClient;
3335
use OCP\Http\Client\IClientService;
3436
use OCP\ICertificateManager;
3537
use OCP\IConfig;
3638
use OCP\Security\IRemoteHostValidator;
39+
use Psr\Http\Message\RequestInterface;
3740

3841
/**
3942
* Class ClientService
@@ -48,15 +51,20 @@ class ClientService implements IClientService {
4851
/** @var DnsPinMiddleware */
4952
private $dnsPinMiddleware;
5053
private IRemoteHostValidator $remoteHostValidator;
54+
private IEventLogger $eventLogger;
5155

52-
public function __construct(IConfig $config,
53-
ICertificateManager $certificateManager,
54-
DnsPinMiddleware $dnsPinMiddleware,
55-
IRemoteHostValidator $remoteHostValidator) {
56+
public function __construct(
57+
IConfig $config,
58+
ICertificateManager $certificateManager,
59+
DnsPinMiddleware $dnsPinMiddleware,
60+
IRemoteHostValidator $remoteHostValidator,
61+
IEventLogger $eventLogger,
62+
) {
5663
$this->config = $config;
5764
$this->certificateManager = $certificateManager;
5865
$this->dnsPinMiddleware = $dnsPinMiddleware;
5966
$this->remoteHostValidator = $remoteHostValidator;
67+
$this->eventLogger = $eventLogger;
6068
}
6169

6270
/**
@@ -66,6 +74,11 @@ public function newClient(): IClient {
6674
$handler = new CurlHandler();
6775
$stack = HandlerStack::create($handler);
6876
$stack->push($this->dnsPinMiddleware->addDnsPinning());
77+
$stack->push(Middleware::tap(function (RequestInterface $request) {
78+
$this->eventLogger->start('http:request', $request->getMethod() . " request to " . $request->getRequestTarget());
79+
}, function () {
80+
$this->eventLogger->end('http:request');
81+
}), 'event logger');
6982

7083
$client = new GuzzleClient(['handler' => $stack]);
7184

tests/lib/Http/Client/ClientServiceTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use OC\Http\Client\Client;
1818
use OC\Http\Client\ClientService;
1919
use OC\Http\Client\DnsPinMiddleware;
20+
use OCP\Diagnostics\IEventLogger;
2021
use OCP\ICertificateManager;
2122
use OCP\IConfig;
2223
use OCP\Security\IRemoteHostValidator;
@@ -37,12 +38,14 @@ public function testNewClient(): void {
3738
->willReturn(function () {
3839
});
3940
$remoteHostValidator = $this->createMock(IRemoteHostValidator::class);
41+
$eventLogger = $this->createMock(IEventLogger::class);
4042

4143
$clientService = new ClientService(
4244
$config,
4345
$certificateManager,
4446
$dnsPinMiddleware,
45-
$remoteHostValidator
47+
$remoteHostValidator,
48+
$eventLogger
4649
);
4750

4851
$handler = new CurlHandler();

0 commit comments

Comments
 (0)