diff --git a/routes.php b/routes.php index 2f3d2a9..62c7f9b 100644 --- a/routes.php +++ b/routes.php @@ -2,8 +2,7 @@ use Silva\Adrema\Support\Proxy; -Route::get( - '/adrema-api/{route}', - fn (string $route) => Response::json(app(Proxy::class)->run($route)) -) +Route::get('/adrema-api/{route}', fn (string $route) => Response::json(app(Proxy::class)->run($route, 'get'))) + ->where('route', '[a-zA-Z0-9\-/]+')->middleware('api'); +Route::post('/adrema-api/{route}', fn (string $route) => app(Proxy::class)->submit($route)) ->where('route', '[a-zA-Z0-9\-/]+')->middleware('api'); diff --git a/support/Proxy.php b/support/Proxy.php index 06f3c06..4549cd6 100644 --- a/support/Proxy.php +++ b/support/Proxy.php @@ -4,15 +4,13 @@ namespace Silva\Adrema\Support; use Silva\Adrema\Models\Settings; use Http; +use Illuminate\Http\JsonResponse; class Proxy { public function run(string $url): ?array { - $url = str($url)->start('/'); - - $baseUrl = Settings::get('base_url'); - $response = Http::get($baseUrl . $url); + $response = Http::acceptJson()->get($this->url($url)); if (!$response->ok()) { return null; @@ -20,4 +18,16 @@ class Proxy return $response->json(); } + + public function submit(string $url): JsonResponse + { + $response = Http::acceptJson()->post($this->url($url), request()->input()); + + return response()->json($response->json(), $response->status()); + } + + private function url(string $internal): string + { + return Settings::get('base_url') . str($internal)->start('/'); + } }