Implemented HttpResponse cache to reduce hitting rate-limits for redundant requests (plus it makes requests faster)

This commit is contained in:
Netkas 2022-12-15 17:49:09 -05:00
parent fa8301710f
commit 259620079e

View file

@ -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;
} }