all(), [ 'id' => [ 'required', Rule::exists('App\Models\Asset', 'id')->where(function($query) { return $query->where('moderated', false); }) ], 'type' => 'regex:/(3D|2D)/i' ]); if($validator->fails()) return ValidationHelper::generateValidatorError($validator); $valid = $validator->valid(); $asset = Asset::where('id', $valid['id'])->first(); $valid['type'] = strtolower($valid['type']); if($asset->thumbnail2DHash && $valid['type'] == '2d') return response(['status' => 'success', 'data' => route('content', $asset->thumbnail2DHash)]); if($asset->thumbnail3DHash && $valid['type'] == '3d') return response(['status' => 'success', 'data' => route('content', $asset->thumbnail3DHash)]); $tracker = RenderTracker::where('type', sprintf('asset%s', $valid['type'])) ->where('target', $valid['id']); if(!$tracker->exists()) { $tracker = new RenderTracker; $tracker->type = sprintf('asset%s', $valid['type']); $tracker->target = $valid['id']; $tracker->save(); ArbiterRender::dispatch($tracker, $valid['type'] == '3d', $asset->typeString(), $asset->id); } return response(['status' => 'loading']); } public function renderUser() { // } public function tryAsset() { // } }