浏览代码

open-platform proxy

peterguo 3 天之前
父节点
当前提交
7f96686e67
共有 2 个文件被更改,包括 40 次插入1 次删除
  1. 39 0
      app/Http/Controllers/API/OpenPlatformController.php
  2. 1 1
      routes/api.php

+ 39 - 0
app/Http/Controllers/API/OpenPlatformController.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Controllers\API;
+
+use App\Http\Controllers\Controller;
+use GuzzleHttp\Client;
+use GuzzleHttp\Exception\GuzzleException;
+use Illuminate\Http\Request;
+
+class OpenPlatformController extends Controller
+{
+    public function proxy(Request $request)
+    {
+        $client = new Client();
+        $path = $request->get('path');
+        $targetUrl = env('OPEN_PLATFORM_URL') . $path;
+        $method = $request->getMethod();
+        $headers = $request->headers->all();
+        $body = $request->getContent();
+
+        try {
+            $response = $client->request($method, $targetUrl, [
+                'headers' => $headers,
+                'body' => $body,
+                'auth' => [
+                    env('OPEN_PLATFORM_USERNAME'),
+                    env('OPEN_PLATFORM_PASSWORD')
+                ]
+            ]);
+            $content = json_decode($response->getBody()->getContents(), true);
+            if ($response->getStatusCode() != 200) {
+                return $this->badRequest($content['message']);
+            }
+            return $this->success(['data' => $content['data']]);
+        } catch (GuzzleException $e) {
+            return $this->badRequest($e->getMessage());
+        }
+    }
+}

+ 1 - 1
routes/api.php

@@ -87,7 +87,7 @@ Route::middleware((function() {
         Route::get("approval-items",[API\ApprovalController::class, "publicSearch"]);
         Route::post("file-cos-token",[API\FileController::class, "getCOSToken"])->name('file.cos.token');
         Route::post("naming-rule/{name_rule}/parse", [API\NameRuleController::class, "parse"]);
-
+        Route::any('open-platform', [API\OpenPlatformController::class, 'proxy']);
 
         // Allow access only to admin role
         Route::middleware(['permission', 'role.super-admin', 'system.operation-log'])->group(function () {