[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * @package s9e\TextFormatter 5 * @copyright Copyright (c) 2010-2022 The s9e authors 6 * @license http://www.opensource.org/licenses/mit-license.php The MIT License 7 */ 8 namespace s9e\TextFormatter\Utils\Http\Clients; 9 10 use s9e\TextFormatter\Utils\Http\Client; 11 12 class Cached extends Client 13 { 14 /** 15 * @var Client 16 */ 17 public $client; 18 19 /** 20 * @var string 21 */ 22 public $cacheDir; 23 24 /** 25 * @param Client $client 26 */ 27 public function __construct(Client $client) 28 { 29 $this->client = $client; 30 $this->timeout = $client->timeout; 31 $this->sslVerifyPeer = $client->sslVerifyPeer; 32 } 33 34 /** 35 * {@inheritdoc} 36 */ 37 public function get($url, array $options = []) 38 { 39 $filepath = $this->getCachedFilepath([$url, $options]); 40 if (isset($filepath) && file_exists(preg_replace('(^compress\\.zlib://)', '', $filepath))) 41 { 42 return file_get_contents($filepath); 43 } 44 45 $content = $this->getClient()->get($url, $options); 46 if (isset($filepath) && $content !== false) 47 { 48 file_put_contents($filepath, $content); 49 } 50 51 return $content; 52 } 53 54 /** 55 * {@inheritdoc} 56 */ 57 public function post($url, array $options = [], $body = '') 58 { 59 return $this->getClient()->post($url, $options, $body); 60 } 61 62 /** 63 * Generate and return a filepath that matches given vars 64 * 65 * @param array $vars 66 * @return string 67 */ 68 protected function getCachedFilepath(array $vars) 69 { 70 if (!isset($this->cacheDir)) 71 { 72 return null; 73 } 74 75 $filepath = $this->cacheDir . '/http.' . $this->getCacheKey($vars); 76 if (extension_loaded('zlib')) 77 { 78 $filepath = 'compress.zlib://' . $filepath . '.gz'; 79 } 80 81 return $filepath; 82 } 83 84 85 /** 86 * Generate a key for a given set of values 87 * 88 * @param string[] $vars 89 * @return string 90 */ 91 protected function getCacheKey(array $vars) 92 { 93 return strtr(base64_encode(sha1(serialize($vars), true)), '/', '_'); 94 } 95 96 /** 97 * Return cached client configured with this client's options 98 * 99 * @return Client 100 */ 101 protected function getClient() 102 { 103 $this->client->timeout = $this->timeout; 104 $this->client->sslVerifyPeer = $this->sslVerifyPeer; 105 106 return $this->client; 107 } 108 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |