Add put_object operation
This commit is contained in:
59
main.py
59
main.py
@@ -25,6 +25,9 @@ from zip import Zip
|
|||||||
import boto3
|
import boto3
|
||||||
import db
|
import db
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
from fastapi import FastAPI, Response, Form, UploadFile, File
|
||||||
|
import uvicorn
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
|
||||||
NEW_REPLICATION_REQUEST = 99
|
NEW_REPLICATION_REQUEST = 99
|
||||||
@@ -341,6 +344,10 @@ def get_metadata(params, files, url):
|
|||||||
proxy.send(response_params, response_files, Config.ret_path)
|
proxy.send(response_params, response_files, Config.ret_path)
|
||||||
|
|
||||||
|
|
||||||
|
def put_object(params, files, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def apply_commits(params, files, url):
|
def apply_commits(params, files, url):
|
||||||
logger.warning(params, files, url)
|
logger.warning(params, files, url)
|
||||||
assert len(files) == 1
|
assert len(files) == 1
|
||||||
@@ -376,6 +383,8 @@ def run_task(query_type, params, files, url):
|
|||||||
tasks.put(lambda: get_objects(params, files, url))
|
tasks.put(lambda: get_objects(params, files, url))
|
||||||
if query_type == 24:
|
if query_type == 24:
|
||||||
tasks.put(lambda: get_metadata(params, files, url))
|
tasks.put(lambda: get_metadata(params, files, url))
|
||||||
|
if query_type == 6:
|
||||||
|
tasks.put(lambda: put_object(params, files, url))
|
||||||
if query_type == NEW_REPLICATION_REQUEST:
|
if query_type == NEW_REPLICATION_REQUEST:
|
||||||
tasks.put(lambda: apply_commits(params, files, url))
|
tasks.put(lambda: apply_commits(params, files, url))
|
||||||
|
|
||||||
@@ -407,9 +416,7 @@ def bnd_disconnected(bnd_name: str):
|
|||||||
connected.remove(bnd_name)
|
connected.remove(bnd_name)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def xmlrpc_task():
|
||||||
logger.setLevel(logging.INFO)
|
|
||||||
logger.warning('Use Control-C to exit')
|
|
||||||
server = SimpleXMLRPCServer(('0.0.0.0', 9000), logRequests=False, allow_none=True)
|
server = SimpleXMLRPCServer(('0.0.0.0', 9000), logRequests=False, allow_none=True)
|
||||||
server.register_function(list_contents)
|
server.register_function(list_contents)
|
||||||
server.register_function(aud_add)
|
server.register_function(aud_add)
|
||||||
@@ -420,6 +427,50 @@ def main():
|
|||||||
server.register_function(onDelivered)
|
server.register_function(onDelivered)
|
||||||
server.register_function(bnd_connected)
|
server.register_function(bnd_connected)
|
||||||
server.register_function(bnd_disconnected)
|
server.register_function(bnd_disconnected)
|
||||||
|
server.serve_forever()
|
||||||
|
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/")
|
||||||
|
async def fa_root():
|
||||||
|
return {"message": "Hello World"}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/login")
|
||||||
|
async def fa_login(response: Response):
|
||||||
|
response.set_cookie(key='sessionid', value='87654321')
|
||||||
|
response.set_cookie(key='csrftoken', value='12345678')
|
||||||
|
return {"login": "Ok"}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/api/easo/PutObject")
|
||||||
|
async def fa_put_object(response: Response,
|
||||||
|
object_attrs: Annotated[str, Form()],
|
||||||
|
object_file: Annotated[UploadFile, File()]
|
||||||
|
):
|
||||||
|
date = datetime.datetime.now()
|
||||||
|
files = [{'name': object_file.filename, 'url': object_file.file.name, 'size': os.path.getsize(object_file.size)}]
|
||||||
|
request_params = {
|
||||||
|
'from': '',
|
||||||
|
'to': '',
|
||||||
|
'ts_added': date.timestamp(),
|
||||||
|
'user_id': '0',
|
||||||
|
'user_id_to': '0',
|
||||||
|
'query_type': 6,
|
||||||
|
'query_data': object_attrs,
|
||||||
|
}
|
||||||
|
put_object(request_params, files, None)
|
||||||
|
return {"Upload": "Ok"}
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
logger.warning('Use Control-C to exit')
|
||||||
|
|
||||||
|
xmlrpc_thread = threading.Thread(target=xmlrpc_task)
|
||||||
|
xmlrpc_thread.start()
|
||||||
|
|
||||||
thread = threading.Thread(target=run_tasks)
|
thread = threading.Thread(target=run_tasks)
|
||||||
thread.start()
|
thread.start()
|
||||||
@@ -432,7 +483,7 @@ def main():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
logger.warning('Start server')
|
logger.warning('Start server')
|
||||||
server.serve_forever()
|
uvicorn.run(app, host="0.0.0.0", port=9001)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
logger.warning('Exiting')
|
logger.warning('Exiting')
|
||||||
|
|
||||||
|
|||||||
@@ -23,3 +23,6 @@ typing_extensions==4.7.1
|
|||||||
urllib3==2.0.4
|
urllib3==2.0.4
|
||||||
yarl==1.9.2
|
yarl==1.9.2
|
||||||
SQLAlchemy~=2.0.20
|
SQLAlchemy~=2.0.20
|
||||||
|
fastapi=~0.103.1
|
||||||
|
uvicorn=~0.23.2
|
||||||
|
python-multipart=~0.0.6
|
||||||
|
|||||||
Reference in New Issue
Block a user