API: upload sections list

This commit is contained in:
xiaomlove
2025-02-15 03:15:45 +08:00
parent 0d7cbcde9f
commit c9b2237efd
16 changed files with 262 additions and 10 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Repositories;
use App\Auth\Permission;
use App\Exceptions\InsufficientPermissionException;
use App\Http\Middleware\Locale;
use App\Models\Category;
@@ -242,5 +243,20 @@ class SearchBoxRepository extends BaseRepository
return Category::query()->whereIn('id', $idArr)->delete();
}
public function listSections()
{
$modeIds = [SearchBox::getBrowseMode()];
if (SearchBox::isSpecialEnabled() && Permission::canUploadToSpecialSection()) {
$modeIds[] = SearchBox::getSpecialMode();
}
$searchBoxList = SearchBox::query()->with("categories")->find($modeIds);
foreach ($searchBoxList as $searchBox) {
if ($searchBox->showsubcat) {
$searchBox->loadSubCategories();
}
}
return $searchBoxList;
}
}

View File

@@ -0,0 +1,72 @@
<?php
namespace App\Repositories;
use App\Auth\Permission;
use App\Exceptions\NexusException;
use App\Models\Category;
use App\Models\SearchBox;
use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;
class UploadRepository extends BaseRepository
{
public function upload(Request $request)
{
$user = $request->user();
if ($user->uploadpos != 'yes') {
throw new NexusException("user upload permission is disabled");
}
$rules = [
'descr' => 'required',
'type' => 'required',
'name' => 'required',
];
$request->validate($rules);
$category = Category::query()->firstOrFail($request->type);
$mode = $category->mode;
$anonymous = "no";
$uploaderUsername = $user->username;
if ($request->uplver == 'yes' && user_can('beanonymous')) {
$anonymous = "yes";
$uploaderUsername = "Anonymous";
}
}
private function getTorrentFile(Request $request): UploadedFile
{
$file = $request->file('file');
if (empty($file)) {
throw new NexusException("torrent file not found");
}
if (!$file->isValid()) {
throw new NexusException("upload torrent file error");
}
return $file;
}
private function getNfoContent(Request $request): string
{
$enableNfo = get_setting("main.enablenfo") == "yes";
if (!$enableNfo) {
return '';
}
$file = $request->file('nfo');
if (empty($file)) {
return '';
}
if (!$file->isValid()) {
throw new NexusException("upload nfo file error");
}
$size = $file->getSize();
if ($size == 0) {
throw new NexusException("upload nfo file size is zero");
}
if ($size > 65535) {
throw new NexusException("upload nfo file size is too large");
}
return str_replace("\x0d\x0d\x0a", "\x0d\x0a", $file->getContent());
}
}