Update API and RSS XML output to be same as the new newznab API 0.7 specification (newznab:apilimits)

This commit is contained in:
DariusIII
2019-07-20 22:29:19 +00:00
parent a1828649e0
commit cd57779e8b
5 changed files with 53 additions and 9 deletions
+6
View File
@@ -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();
}
+2
View File
@@ -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
+8 -1
View File
@@ -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.
+30 -8
View File
@@ -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)),
];
+7
View File
@@ -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];