add logging; fix caching
[pharext/pharext.org] / app / Github / ClientObserver.php
1 <?php
2
3 namespace app\Github;
4
5 use SplObserver;
6 use SplSubject;
7
8 use http\Client\Request;
9
10 use Psr\Log\LoggerInterface;
11
12 class ClientObserver implements SplObserver
13 {
14 private $logger;
15
16 function __construct(LoggerInterface $logger) {
17 $this->logger = $logger;
18 }
19
20 function update(SplSubject $client, Request $request = null, $progress = null) {
21 switch ($progress->info) {
22 case "start":
23 if (!$progress->started) {
24 $message = sprintf("API-Shot: start %s %s", $request->getRequestMethod(), $request->getRequestUrl());
25 $this->logger->debug($message);
26 }
27 break;
28 case "finished":
29 $response = $client->getResponse($request);
30 $message = sprintf("API-Shot: finished [%d] %s %s", $response->getResponseCode(), $request->getRequestMethod(), $request->getRequestUrl());
31 if ($response->getResponseCode() >= 400 || $response->getTransferInfo("error")) {
32 $this->logger->error($message, (array) $response->getTransferInfo());
33 } else {
34 $this->logger->info($message);
35 }
36 break;
37 default:
38 break;
39 }
40 }
41 }