diff --git a/Blacklight/http/XML_Response.php b/Blacklight/http/XML_Response.php index 1400072e4..67b4397f1 100755 --- a/Blacklight/http/XML_Response.php +++ b/Blacklight/http/XML_Response.php @@ -356,6 +356,12 @@ class XML_Response $this->xml->writeAttribute('apimax', $this->parameters['apilimit']); $this->xml->writeAttribute('grabcurrent', $this->parameters['grabs']); $this->xml->writeAttribute('grabmax', $this->parameters['downloadlimit']); + if (! empty($this->parameters['oldestapi'])) { + $this->xml->writeAttribute('apioldesttime', $this->parameters['oldestapi']); + } + if (! empty($this->parameters['oldestgrab'])) { + $this->xml->writeAttribute('graboldesttime', $this->parameters['oldestgrab']); + } $this->xml->endElement(); } diff --git a/Changelog b/Changelog index e6b24d4e7..7141aee44 100755 --- a/Changelog +++ b/Changelog @@ -1,3 +1,5 @@ +2019-07-21 DariusIII + * Chg: Update API and RSS XML output to be same as the new newznab API 0.7 specification (newznab:apilimits) 2019-07-19 DariusIII * Chg: Update nesbot/carbon and voku/simplehtmldom to latest versions 2019-07-18 DariusIII diff --git a/app/Http/Controllers/Api/ApiController.php b/app/Http/Controllers/Api/ApiController.php index 9789a07bc..0cecfa2e4 100644 --- a/app/Http/Controllers/Api/ApiController.php +++ b/app/Http/Controllers/Api/ApiController.php @@ -10,6 +10,7 @@ use App\Models\ReleaseNfo; use App\Models\UserRequest; use App\Models\UserDownload; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use App\Events\UserAccessedApi; use Blacklight\utility\Utility; use App\Http\Controllers\BasePageController; @@ -63,7 +64,7 @@ class ApiController extends BasePageController Utility::showApiError(200, 'Missing parameter (t)'); } - $uid = $apiKey = ''; + $uid = $apiKey = $oldestGrabTime = $apiOldestTime = ''; $res = $catExclusions = []; $maxRequests = $apiRequests = $maxDownloads = $grabs = 0; @@ -88,6 +89,10 @@ class ApiController extends BasePageController $catExclusions = User::getCategoryExclusionForApi($request); $maxRequests = $res->role->apirequests; $maxDownloads = $res->role->downloadrequests; + $time = UserRequest::whereUsersId($uid)->min('timestamp'); + $apiOldestTime = $time !== null ? Carbon::createFromTimeString($time)->toRfc822String() : ''; + $grabTime = UserDownload::whereUsersId($uid)->min('timestamp'); + $oldestGrabTime = $grabTime !== null ? Carbon::createFromTimeString($grabTime)->toRfc822String() : ''; } // Record user access to the api, if its been called by a user (i.e. capabilities request do not require a user to be logged in or key provided). @@ -117,6 +122,8 @@ class ApiController extends BasePageController $params['requests'] = $apiRequests; $params['downloadlimit'] = $maxDownloads; $params['grabs'] = $grabs; + $params['oldestapi'] = $apiOldestTime; + $params['oldestgrab'] = $oldestGrabTime; switch ($function) { // Search releases. diff --git a/app/Http/Controllers/Api/ApiV2Controller.php b/app/Http/Controllers/Api/ApiV2Controller.php index 1c46edb89..573913686 100644 --- a/app/Http/Controllers/Api/ApiV2Controller.php +++ b/app/Http/Controllers/Api/ApiV2Controller.php @@ -11,6 +11,7 @@ use Blacklight\Releases; use App\Models\UserRequest; use App\Models\UserDownload; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use App\Events\UserAccessedApi; use Blacklight\utility\Utility; use App\Transformers\ApiTransformer; @@ -93,12 +94,19 @@ class ApiV2Controller extends BasePageController $tags ); + $time = UserRequest::whereUsersId($user->id)->min('timestamp'); + $apiOldestTime = $time !== null ? Carbon::createFromTimeString($time)->toRfc822String() : ''; + $grabTime = UserDownload::whereUsersId($user->id)->min('timestamp'); + $oldestGrabTime = $grabTime !== null ? Carbon::createFromTimeString($grabTime)->toRfc822String() : ''; + $response = [ 'Total' => $relData[0]->_totalrows ?? 0, - 'ApiRequests' => UserRequest::getApiRequests($user->id), - 'ApiLimit' => $user->role->apirequests, - 'Grabs' => UserDownload::getDownloadRequests($user->id), - 'DownloadLimit' => $user->role->downloadrequests, + 'apiCurrent' => UserRequest::getApiRequests($user->id), + 'apiMax' => $user->role->apirequests, + 'grabCurrent' => UserDownload::getDownloadRequests($user->id), + 'grabMax' => $user->role->downloadrequests, + 'apiOldestTime' => $apiOldestTime, + 'grabOldestTime' => $oldestGrabTime, 'Results' => fractal($relData, new ApiTransformer($user)), ]; @@ -155,12 +163,19 @@ class ApiV2Controller extends BasePageController ); } + $time = UserRequest::whereUsersId($user->id)->min('timestamp'); + $apiOldestTime = $time !== null ? Carbon::createFromTimeString($time)->toRfc822String() : ''; + $grabTime = UserDownload::whereUsersId($user->id)->min('timestamp'); + $oldestGrabTime = $grabTime !== null ? Carbon::createFromTimeString($grabTime)->toRfc822String() : ''; + $response = [ 'Total' => $relData[0]->_totalrows ?? 0, 'apiCurrent' => UserRequest::getApiRequests($user->id), 'apiMax' => $user->role->apirequests, 'grabCurrent' => UserDownload::getDownloadRequests($user->id), 'grabMax' => $user->role->downloadrequests, + 'apiOldestTime' => $apiOldestTime, + 'grabOldestTime' => $oldestGrabTime, 'Results' => fractal($relData, new ApiTransformer($user)), ]; @@ -230,12 +245,19 @@ class ApiV2Controller extends BasePageController $tags ); + $time = UserRequest::whereUsersId($user->id)->min('timestamp'); + $apiOldestTime = $time !== null ? Carbon::createFromTimeString($time)->toRfc822String() : ''; + $grabTime = UserDownload::whereUsersId($user->id)->min('timestamp'); + $oldestGrabTime = $grabTime !== null ? Carbon::createFromTimeString($grabTime)->toRfc822String() : ''; + $response = [ 'Total' => $relData[0]->_totalrows ?? 0, - 'ApiRequests' => UserRequest::getApiRequests($user->id), - 'ApiLimit' => $user->role->apirequests, - 'Grabs' => UserDownload::getDownloadRequests($user->id), - 'DownloadLimit' => $user->role->downloadrequests, + 'apiCurrent' => UserRequest::getApiRequests($user->id), + 'apiMax' => $user->role->apirequests, + 'grabCurrent' => UserDownload::getDownloadRequests($user->id), + 'grabMax' => $user->role->downloadrequests, + 'apiOldestTime' => $apiOldestTime, + 'grabOldestTime' => $oldestGrabTime, 'Results' => fractal($relData, new ApiTransformer($user)), ]; diff --git a/app/Http/Controllers/RssController.php b/app/Http/Controllers/RssController.php index d902120fb..5e1f6d437 100644 --- a/app/Http/Controllers/RssController.php +++ b/app/Http/Controllers/RssController.php @@ -9,6 +9,7 @@ use App\Models\UserRequest; use Illuminate\Support\Arr; use App\Models\UserDownload; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; class RssController extends BasePageController { @@ -216,6 +217,10 @@ class RssController extends BasePageController $maxRequests = $res->role->apirequests; $maxDownloads = $res->role->downloadrequests; $usedRequests = UserRequest::getApiRequests($uid); + $time = UserRequest::whereUsersId($uid)->min('timestamp'); + $apiOldestTime = $time !== null ? Carbon::createFromTimeString($time)->toRfc822String() : ''; + $grabTime = UserDownload::whereUsersId($uid)->min('timestamp'); + $oldestGrabTime = $grabTime !== null ? Carbon::createFromTimeString($grabTime)->toRfc822String() : ''; if ($res->hasRole('Disabled')) { return response()->json(['error' => 'Your account is disabled'], 403); @@ -237,6 +242,8 @@ class RssController extends BasePageController 'requests' => $usedRequests, 'downloadlimit' => $maxDownloads, 'grabs' => UserDownload::getDownloadRequests($uid), + 'oldestapi' => $apiOldestTime, + 'oldestgrab' => $oldestGrabTime, ]; return ['user' => $res, 'user_id' => $uid, 'rss_token' => $rssToken, 'max_requests' => $maxRequests, 'params' => $params];