fix: torrent api

This commit is contained in:
HDVinnie
2022-05-29 23:37:45 -04:00
parent 32fe112635
commit 357fed48a4
+38 -31
View File
@@ -330,39 +330,46 @@ class TorrentController extends BaseController
*/
public function filter(Request $request): TorrentsResource|\Illuminate\Http\JsonResponse
{
$user = \auth()->user();
$isRegexAllowed = $user->group->is_modo;
$isRegex = fn ($field) => $isRegexAllowed
&& \strlen($field) >= 2
&& $field[0] === '/'
&& $field[-1] === '/';
$torrents = Torrent::with(['user:id,username,group_id', 'category', 'type', 'resolution'])
->withCount(['thanks', 'comments'])
->when($request->has('name'), fn ($query) => $query->ofName($request->name, false))
->when($request->has('description'), fn ($query) => $query->ofDescription($request->description, false))
->when($request->has('mediainfo'), fn ($query) => $query->ofMediainfo($request->mediainfo, false))
->when($request->has('uploader'), fn ($query) => $query->ofUploader($request->uploader))
->when($request->has('keywords'), fn ($query) => $query->ofKeyword(\array_map('trim', explode(',', $request->keywords))))
->when($request->has('startYear'), fn ($query) => $query->releasedAfterOrIn($request->startYear))
->when($request->has('endYear'), fn ($query) => $query->releasedBeforeOrIn($request->endYear))
->when($request->has('categories'), fn ($query) => $query->ofCategory($request->categories))
->when($request->has('types'), fn ($query) => $query->ofType($request->types))
->when($request->has('resolutions'), fn ($query) => $query->ofResolution($request->resolutions))
->when($request->has('genres'), fn ($query) => $query->ofGenre($request->genres))
->when($request->has('tmdbId'), fn ($query) => $query->ofTmdb($request->tmdbId))
->when($request->has('imdbId'), fn ($query) => $query->ofImdb($request->imdbId))
->when($request->has('tvdbId'), fn ($query) => $query->ofTvdb($request->tvdbId))
->when($request->has('malId'), fn ($query) => $query->ofMal($request->malId))
->when($request->has('playlistId'), fn ($query) => $query->ofPlaylist($request->playlistId))
->when($request->has('collectionId'), fn ($query) => $query->ofCollection($request->collectionId))
->when($request->has('free'), fn ($query) => $query->ofFreeleech([25, 50, 75, 100]))
->when($request->has('doubleup'), fn ($query) => $query->doubleup())
->when($request->has('featured'), fn ($query) => $query->featured())
->when($request->has('stream'), fn ($query) => $query->streamOptimized())
->when($request->has('sd'), fn ($query) => $query->sd())
->when($request->has('highspeed'), fn ($query) => $query->highspeed())
->when($request->has('internal'), fn ($query) => $query->internal())
->when($request->has('personalRelease'), fn ($query) => $query->personalRelease())
->when($request->has('alive'), fn ($query) => $query->alive())
->when($request->has('dying'), fn ($query) => $query->dying())
->when($request->has('dead'), fn ($query) => $query->dead())
->when($request->has('file_name'), fn ($query) => $query->ofFilename($request->file_name))
->when($request->has('seasonNumber'), fn ($query) => $query->ofSeason($request->seasonNumber))
->when($request->has('episodeNumber'), fn ($query) => $query->ofEpisode($request->episodeNumber))
->when($request->filled('name'), fn ($query) => $query->ofName($request->name, $isRegex($request->name)))
->when($request->filled('description'), fn ($query) => $query->ofDescription($request->description, $isRegex($request->name)))
->when($request->filled('mediainfo'), fn ($query) => $query->ofMediainfo($request->mediainfo, $isRegex($request->name)))
->when($request->filled('uploader'), fn ($query) => $query->ofUploader($request->uploader))
->when($request->filled('keywords'), fn ($query) => $query->ofKeyword(\array_map('trim', explode(',', $request->keywords))))
->when($request->filled('startYear'), fn ($query) => $query->releasedAfterOrIn($request->startYear))
->when($request->filled('endYear'), fn ($query) => $query->releasedBeforeOrIn($request->endYear))
->when($request->filled('categories'), fn ($query) => $query->ofCategory($request->categories))
->when($request->filled('types'), fn ($query) => $query->ofType($request->types))
->when($request->filled('resolutions'), fn ($query) => $query->ofResolution($request->resolutions))
->when($request->filled('genres'), fn ($query) => $query->ofGenre($request->genres))
->when($request->filled('tmdbId'), fn ($query) => $query->ofTmdb($request->tmdbId))
->when($request->filled('imdbId'), fn ($query) => $query->ofImdb($request->imdbId))
->when($request->filled('tvdbId'), fn ($query) => $query->ofTvdb($request->tvdbId))
->when($request->filled('malId'), fn ($query) => $query->ofMal($request->malId))
->when($request->filled('playlistId'), fn ($query) => $query->ofPlaylist($request->playlistId))
->when($request->filled('collectionId'), fn ($query) => $query->ofCollection($request->collectionId))
->when($request->filled('free'), fn ($query) => $query->ofFreeleech([25, 50, 75, 100]))
->when($request->filled('doubleup'), fn ($query) => $query->doubleup())
->when($request->filled('featured'), fn ($query) => $query->featured())
->when($request->filled('stream'), fn ($query) => $query->streamOptimized())
->when($request->filled('sd'), fn ($query) => $query->sd())
->when($request->filled('highspeed'), fn ($query) => $query->highspeed())
->when($request->filled('internal'), fn ($query) => $query->internal())
->when($request->filled('personalRelease'), fn ($query) => $query->personalRelease())
->when($request->filled('alive'), fn ($query) => $query->alive())
->when($request->filled('dying'), fn ($query) => $query->dying())
->when($request->filled('dead'), fn ($query) => $query->dead())
->when($request->filled('file_name'), fn ($query) => $query->ofFilename($request->file_name))
->when($request->filled('seasonNumber'), fn ($query) => $query->ofSeason($request->seasonNumber))
->when($request->filled('episodeNumber'), fn ($query) => $query->ofEpisode($request->episodeNumber))
->latest('sticky')
->orderBy($request->input('sortField') ?? $this->sortField, $request->input('sortDirection') ?? $this->sortDirection)
->paginate($request->input('perPage') ?? $this->perPage);