alroyso 1 year ago
parent
commit
b8049b9311
1 changed files with 57 additions and 0 deletions
  1. 57 0
      src/api/NasToolsClient.py

+ 57 - 0
src/api/NasToolsClient.py

@@ -0,0 +1,57 @@
+import requests
+
+
+class NasToolsClient:
+    def __init__(self, base_url, api_key=None):
+        self.base_url = base_url
+        self.api_key = api_key
+        self.token = None
+
+    def login(self, username, password):
+        """登录并获取令牌"""
+        login_url = f"{self.base_url}/user/login"
+        data = {
+            "username": username,
+            "password": password
+        }
+        response = requests.post(login_url, json=data)
+        if response.status_code == 200:
+            self.token = response.json().get("data", {}).get("token")
+            return self.token
+        else:
+            raise Exception("Failed to login:", response.text)
+
+    def get(self, endpoint):
+        """执行带有令牌的 GET 请求"""
+        url = f"{self.base_url}{endpoint}"
+        headers = {
+            "Authorization": f"Bearer {self.token}" if self.token else f"ApiKey {self.api_key}"
+        }
+        response = requests.get(url, headers=headers)
+        if response.status_code == 200:
+            return response.json()
+        else:
+            raise Exception("Failed to get data:", response.text)
+
+    def run_service(self, service_name):
+        """
+        运行指定的服务
+        """
+        url = f'{self.base_url}/service/run'
+        headers = {
+            "Authorization": f"Bearer {self.token}" if self.token else f"ApiKey {self.api_key}"
+        }
+        payload = {'item': service_name}
+        response = requests.post(url, json=payload, headers=headers)
+        return response.json()
+# # 使用示例
+# base_url = "http://your-nas-tools-address/api/v1"
+# username = "your_username"
+# password = "your_password"
+# api_key = "your_api_key"
+#
+# client = NasToolsClient(base_url, api_key)
+# token = client.login(username, password)
+# print("Token:", token)
+#
+# # 现在可以使用 client.get 方法来调用其他 API