2929use GuzzleHttp \Client as GuzzleClient ;
3030use GuzzleHttp \HandlerStack ;
3131use GuzzleHttp \Handler \CurlHandler ;
32+ use GuzzleHttp \Middleware ;
33+ use OCP \Diagnostics \IEventLogger ;
3234use OCP \Http \Client \IClient ;
3335use OCP \Http \Client \IClientService ;
3436use OCP \ICertificateManager ;
3537use OCP \IConfig ;
3638use 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
0 commit comments