bale_apk/api/endpoints/apk_tools.py
2021-06-02 20:13:21 +08:00

144 lines
3.3 KiB
Python

# coding:utf-8
import json
import os
import time
from fastapi import APIRouter, File, BackgroundTasks, UploadFile
import schemas
from core.config import settings
from utils import *
router = APIRouter()
#
# @router.post("/channel.json")
# async def channel.json(
# data_in: schemas.BaleCreate
# ) -> schemas.Msg:
# file = os.path.join(settings.ROOT_DIR, 'ApkTool/channel.json')
# with open(file, 'w') as f:
# json.dump(data_in.channel.json, f)
#
# resp = schemas.Msg(
# code=0,
# msg='ok',
# data=data_in
# )
#
# return resp
# @router.post("/keystore")
# async def keystore(
# file: bytes = File(...)
# ) -> schemas.Msg:
# file_path = os.path.join(settings.ROOT_DIR, 'ApkTool/keystore/legu.keystore')
# with open(file_path, 'wb') as f:
# f.write(file)
#
# resp = schemas.Msg(
# code=0,
# msg='ok',
# data=file_path
# )
#
# return resp
#
#
# @router.post("/mother_bag")
# async def mother_bag(
# file: UploadFile = File(...)
# ) -> schemas.Msg:
# file_path = os.path.join(settings.ROOT_DIR, f'ApkTool/{file.filename}')
# with open(file_path, 'wb') as f:
# for i in iter(lambda: file.file.read(1024 * 1024 * 10), b''):
# f.write(i)
#
# resp = schemas.Msg(
# code=0,
# msg='ok',
# data=file_path
# )
# return resp
@router.post("/upload_file")
async def upload_file(
file_type: str,
file: UploadFile = File(...)
) -> schemas.Msg:
if file_type == 'mother_bag':
file_path = os.path.join(settings.ROOT_DIR, f'ApkTool/{file.filename}')
elif file_type == 'keystore':
file_path = os.path.join(settings.ROOT_DIR, f'ApkTool/keystore/{file.filename}')
else:
resp = schemas.Msg(
code=-1,
msg='文件类型错误',
data=file_type
)
return resp
with open(file_path, 'wb') as f:
for i in iter(lambda: file.file.read(1024 * 1024 * 10), b''):
f.write(i)
resp = schemas.Msg(
code=0,
msg='ok',
data=file_path
)
return resp
@router.post("/delete_file")
async def delete_file(
data_in: schemas.DeleteFile,
) -> schemas.Msg:
file_path = data_in.file_path
if 'ApkTool' in file_path and os.path.exists(path=file_path):
os.remove(file_path)
resp = schemas.Msg(
code=0,
msg='ok',
data=file_path
)
return resp
@router.post("/run")
async def run(
data_in: schemas.BaleCreate,
background_tasks: BackgroundTasks
):
r = os.popen('ps -ef|grep MakeTool.py')
res = r.readlines()
if 'python' in ''.join(res) or bale.status == 'busy':
resp = schemas.Msg(
code=-1,
msg='已存在打包任务,请等待'
)
return resp
if bale.status == 'upload':
resp = schemas.Msg(
code=-1,
msg='正在上传,请等待'
)
return resp
file = os.path.join(settings.ROOT_DIR, 'ApkTool/channel.json')
with open(file, 'w') as f:
json.dump(data_in.channel, f)
background_tasks.add_task(bale.run_bale_apk, f'{data_in.dir}_{int(time.time())}', data_in.id)
resp = schemas.Msg(
code=0,
msg='开始打包任务'
)
return resp