Browse Source

feat: latest release check api

Timothy J. Baek 1 year ago
parent
commit
6bfe2a6306
1 changed files with 25 additions and 1 deletions
  1. 25 1
      backend/main.py

+ 25 - 1
backend/main.py

@@ -4,8 +4,9 @@ import markdown
 import time
 import time
 import os
 import os
 import sys
 import sys
+import requests
 
 
-from fastapi import FastAPI, Request, Depends
+from fastapi import FastAPI, Request, Depends, status
 from fastapi.staticfiles import StaticFiles
 from fastapi.staticfiles import StaticFiles
 from fastapi import HTTPException
 from fastapi import HTTPException
 from fastapi.responses import JSONResponse
 from fastapi.responses import JSONResponse
@@ -26,6 +27,8 @@ from apps.web.main import app as webui_app
 
 
 
 
 from config import WEBUI_NAME, ENV, VERSION, CHANGELOG, FRONTEND_BUILD_DIR
 from config import WEBUI_NAME, ENV, VERSION, CHANGELOG, FRONTEND_BUILD_DIR
+from constants import ERROR_MESSAGES
+
 from utils.utils import get_http_authorization_cred, get_current_user
 from utils.utils import get_http_authorization_cred, get_current_user
 
 
 
 
@@ -127,6 +130,27 @@ async def get_app_changelog():
     return CHANGELOG
     return CHANGELOG
 
 
 
 
+@app.get("/api/version/updates")
+async def get_app_latest_release_version():
+    try:
+        response = requests.get(
+            f"https://api.github.com/repos/open-webui/open-webui/releases/latest"
+        )
+        response.raise_for_status()
+        latest_version = response.json()["tag_name"]
+
+        # Compare versions
+        return {
+            "current": VERSION,
+            "latest": latest_version[1:],
+        }
+    except Exception as e:
+        raise HTTPException(
+            status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
+            detail=ERROR_MESSAGES.NOT_FOUND,
+        )
+
+
 app.mount("/static", StaticFiles(directory="static"), name="static")
 app.mount("/static", StaticFiles(directory="static"), name="static")