1<?php
2
3/**
4 * Device Detector - The Universal Device Detection library for parsing User Agents
5 *
6 * @link https://matomo.org
7 *
8 * @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
9 */
10
11declare(strict_types=1);
12
13namespace DeviceDetector\Cache;
14
15use Psr\Cache\CacheItemPoolInterface;
16
17class PSR6Bridge implements CacheInterface
18{
19    /**
20     * @var CacheItemPoolInterface
21     */
22    private $pool;
23
24    /**
25     * PSR6Bridge constructor.
26     * @param CacheItemPoolInterface $pool
27     */
28    public function __construct(CacheItemPoolInterface $pool)
29    {
30        $this->pool = $pool;
31    }
32
33    /**
34     * @inheritDoc
35     */
36    public function fetch(string $id)
37    {
38        $item = $this->pool->getItem($id);
39
40        return $item->isHit() ? $item->get() : false;
41    }
42
43    /**
44     * @inheritDoc
45     */
46    public function contains(string $id): bool
47    {
48        return $this->pool->hasItem($id);
49    }
50
51    /**
52     * @inheritDoc
53     */
54    public function save(string $id, $data, int $lifeTime = 0): bool
55    {
56        $item = $this->pool->getItem($id);
57        $item->set($data);
58
59        if (\func_num_args() > 2) {
60            $item->expiresAfter($lifeTime);
61        }
62
63        return $this->pool->save($item);
64    }
65
66    /**
67     * @inheritDoc
68     */
69    public function delete(string $id): bool
70    {
71        return $this->pool->deleteItem($id);
72    }
73
74    /**
75     * @inheritDoc
76     */
77    public function flushAll(): bool
78    {
79        return $this->pool->clear();
80    }
81}
82