Implemented HttpResponse cache to reduce hitting rate-limits for redundant requests (plus it makes requests faster)
This commit is contained in:
parent
fa8301710f
commit
259620079e
1 changed files with 19 additions and 1 deletions
|
@ -6,6 +6,7 @@
|
||||||
use ncc\Exceptions\HttpException;
|
use ncc\Exceptions\HttpException;
|
||||||
use ncc\Objects\HttpRequest;
|
use ncc\Objects\HttpRequest;
|
||||||
use ncc\Objects\HttpResponse;
|
use ncc\Objects\HttpResponse;
|
||||||
|
use ncc\Objects\HttpResponseCache;
|
||||||
|
|
||||||
class HttpClient
|
class HttpClient
|
||||||
{
|
{
|
||||||
|
@ -13,11 +14,22 @@
|
||||||
* Creates a new HTTP request and returns the response.
|
* Creates a new HTTP request and returns the response.
|
||||||
*
|
*
|
||||||
* @param HttpRequest $httpRequest
|
* @param HttpRequest $httpRequest
|
||||||
|
* @param bool $cache
|
||||||
* @return HttpResponse
|
* @return HttpResponse
|
||||||
* @throws HttpException
|
* @throws HttpException
|
||||||
*/
|
*/
|
||||||
public static function request(HttpRequest $httpRequest): HttpResponse
|
public static function request(HttpRequest $httpRequest, bool $cache=false): HttpResponse
|
||||||
{
|
{
|
||||||
|
if($cache)
|
||||||
|
{
|
||||||
|
/** @var HttpResponseCache $cache */
|
||||||
|
$cache = RuntimeCache::get(sprintf('http_cache_%s', $httpRequest->requestHash()));
|
||||||
|
if($cache !== null && $cache->getTtl() > time())
|
||||||
|
{
|
||||||
|
return $cache->getHttpResponse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$curl = curl_init();
|
$curl = curl_init();
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_URL, $httpRequest->Url);
|
curl_setopt($curl, CURLOPT_URL, $httpRequest->Url);
|
||||||
|
@ -100,6 +112,12 @@
|
||||||
|
|
||||||
curl_close($curl);
|
curl_close($curl);
|
||||||
|
|
||||||
|
if($cache)
|
||||||
|
{
|
||||||
|
$httpCacheObject = new HttpResponseCache($httpResponse, 60);
|
||||||
|
RuntimeCache::set(sprintf('http_cache_%s', $httpRequest->requestHash()), $httpCacheObject);
|
||||||
|
}
|
||||||
|
|
||||||
return $httpResponse;
|
return $httpResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue