]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/AosSeedController.php
add aos generate api endpoint
[alttp.git] / app / Http / Controllers / AosSeedController.php
index 7c7e5f9fdaf04012e1f52def459b52bfabc8b88e..1e2aa73a91b637a07d223cacfa4fb3b729249d2e 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\DiscordAppCommands\AosrPresetCommand;
 use App\Models\AosSeed;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Artisan;
@@ -22,6 +23,25 @@ class AosSeedController extends Controller
                return $seed->toJson();
        }
 
+       public function generate(Request $request) {
+               $validatedData = $request->validate([
+                       'preset' => 'string|required',
+                       'race' => 'boolean',
+               ]);
+               $presetName = $validatedData['preset'];
+               $race = $validatedData['race'] ?? false;
+
+               if (!isset(AosrPresetCommand::$presets[$presetName])) {
+                       abort(404);
+               }
+               $preset = AosrPresetCommand::$presets[$presetName];
+               $seed = AosSeed::generateSurge($presetName, $preset['settings'], $race);
+               Artisan::call('aos:generate '.intval($seed->id));
+
+               $seed = $this->censor($seed->fresh());
+               return $seed->toJson();
+       }
+
        public function retry($hash) {
                $seed = AosSeed::where('hash', '=', $hash)->firstOrFail();
 
@@ -31,7 +51,18 @@ class AosSeedController extends Controller
                        Artisan::call('aos:generate '.intval($seed->id));
                }
 
+               $seed = $this->censor($seed->fresh());
                return $seed->toJson();
        }
 
+       private function censor(AosSeed $seed) {
+               if ($seed->race) {
+                       $seed->makeHidden('seed');
+               }
+               if ($seed->mystery) {
+                       $seed->makeHidden('settings');
+               }
+               return $seed;
+       }
+
 }