1111from pathlib import Path
1212from typing import List
1313
14+ import uvicorn
1415from fastapi import FastAPI , File , UploadFile
1516from fastapi .middleware .cors import CORSMiddleware
1617from fastapi .responses import FileResponse , JSONResponse , RedirectResponse
1718from pydantic import BaseModel
18- import uvicorn
1919
2020from uiautodev import __version__
2121from uiautodev .common import convert_bytes_to_image , get_webpage_url , ocr_image
2222from uiautodev .model import Node
23- from uiautodev .provider import AndroidProvider , IOSProvider , MockProvider
23+ from uiautodev .provider import AndroidProvider , HarmonyProvider , IOSProvider , MockProvider
2424from uiautodev .router .device import make_router
2525from uiautodev .router .xml import router as xml_router
2626from uiautodev .utils .envutils import Environment
3939
4040android_router = make_router (AndroidProvider ())
4141ios_router = make_router (IOSProvider ())
42+ harmony_router = make_router (HarmonyProvider ())
4243mock_router = make_router (MockProvider ())
4344
4445app .include_router (mock_router , prefix = "/api/mock" , tags = ["mock" ])
4546
4647if Environment .UIAUTODEV_MOCK :
4748 app .include_router (mock_router , prefix = "/api/android" , tags = ["mock" ])
4849 app .include_router (mock_router , prefix = "/api/ios" , tags = ["mock" ])
50+ app .include_router (mock_router , prefix = "/api/harmony" , tags = ["mock" ])
4951else :
5052 app .include_router (android_router , prefix = "/api/android" , tags = ["android" ])
5153 app .include_router (ios_router , prefix = "/api/ios" , tags = ["ios" ])
54+ app .include_router (harmony_router , prefix = "/api/harmony" , tags = ["harmony" ])
5255
5356app .include_router (xml_router , prefix = "/api/xml" , tags = ["xml" ])
5457
@@ -61,6 +64,7 @@ class InfoResponse(BaseModel):
6164 cwd : str
6265 drivers : List [str ]
6366
67+
6468@app .get ("/api/info" )
6569def info () -> InfoResponse :
6670 """Information about the application"""
@@ -70,16 +74,18 @@ def info() -> InfoResponse:
7074 platform = platform .system (), # Linux | Darwin | Windows
7175 code_language = "Python" ,
7276 cwd = os .getcwd (),
73- drivers = ["android" , "ios" ],
77+ drivers = ["android" , "ios" , "harmony" ],
7478 )
7579
80+
7681@app .post ('/api/ocr_image' )
7782async def _ocr_image (file : UploadFile = File (...)) -> List [Node ]:
7883 """OCR an image"""
7984 image_data = await file .read ()
8085 image = convert_bytes_to_image (image_data )
8186 return ocr_image (image )
8287
88+
8389@app .get ("/shutdown" )
8490def shutdown () -> str :
8591 """Shutdown the server"""
@@ -88,7 +94,7 @@ def shutdown() -> str:
8894
8995
9096@app .get ("/demo" )
91- def demo () -> str :
97+ def demo ():
9298 """Demo endpoint"""
9399 static_dir = Path (__file__ ).parent / "static"
94100 print (static_dir / "demo.html" )
@@ -104,4 +110,4 @@ def index_redirect():
104110
105111
106112if __name__ == '__main__' :
107- uvicorn .run ("uiautodev.app:app" , port = 4000 , reload = True , use_colors = True )
113+ uvicorn .run ("uiautodev.app:app" , port = 4000 , reload = True , use_colors = True )
0 commit comments