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()