aicheckv2-api/utils/huawei_obs.py

60 lines
1.8 KiB
Python
Raw Normal View History

2025-04-11 14:30:48 +08:00
from application.settings import HUAWEI_OBS
from obs import ObsClient
from obs import DeleteObjectsRequest
from obs import Object
class ObsClient:
def __int__(self):
self.obsClient = ObsClient(
access_key_id=HUAWEI_OBS['AccessKeyID'],
secret_access_key=HUAWEI_OBS['SecretAccessKey'],
server=HUAWEI_OBS["server"])
async def put_file(self, objectKey: str, file_path: str):
resp = await self.obsClient.putFile(
bucketName=HUAWEI_OBS["bucketName"],
objectKey=objectKey,
file_path=file_path)
if resp.status < 300:
print("objectKey", objectKey)
print("url", resp.body.objectUrl)
return True, objectKey, resp.body.objectUrl
else:
return False, None, None
async def put_object(self, objectKey: str, file_content):
resp = await self.obsClient.put_object(
bucketName=HUAWEI_OBS["bucketName"],
objectKey=objectKey,
file_cotent=file_content)
if resp.status < 300:
print("objectKey", objectKey)
print("url", resp.body.objectUrl)
return True, objectKey, resp.body.objectUrl
else:
return False, None, None
async def del_objects(self, object_keys: []):
objects = []
for object_key in object_keys:
object_one = Object(key=object_key, versionId=None)
objects.append(object_one)
encoding_type = 'url'
resp = await self.obsClient.deleteObjects(
bucketName=HUAWEI_OBS["bucketName"],
deleteObjectsRequest=DeleteObjectsRequest(quiet=False, objects=objects, encoding_type=encoding_type))
if resp.status < 300:
return True
else:
return False
async def close(self):
await self.obsClient.close()