CoolFace
Apppublic

docsift-backend-host/docsift-api

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
storage.py55 linesDownload Raw Back to root
1import os 2import aioboto33from dotenv import load_dotenv4 5# تحميل متغيرات البيئة6load_dotenv()7 8# إعداد الـ Session والـ Client بطريقة Async9# هاد الطريقة كتخلينا نفتحو Session وحدة ونخدمو بها فـ كاع الـ Requests10session = aioboto3.Session()11 12BUCKET_NAME = os.environ.get("R2_BUCKET_NAME")13ENDPOINT_URL = os.environ.get("R2_ENDPOINT_URL")14ACCESS_KEY = os.environ.get("R2_ACCESS_KEY")15SECRET_KEY = os.environ.get("R2_SECRET_KEY")16R2_PUBLIC_URL = os.environ.get("R2_PUBLIC_URL")17 18async def upload_file_to_r2(file_content, file_name):19    """رفع الملف لـ Cloudflare R2 بطريقة غير متزامنة تماماً"""20    try:21        async with session.client(22            "s3",23            endpoint_url=ENDPOINT_URL,24            aws_access_key_id=ACCESS_KEY,25            aws_secret_access_key=SECRET_KEY,26            region_name="auto"27        ) as s3:28            # الرفع باستخدام put_object الـ Async29            await s3.put_object(30                Bucket=BUCKET_NAME,31                Key=file_name,32                Body=file_content,33                ContentType="application/pdf" # تقدر تردها Dynamic على حسب نوع الملف34            )35        print(f"✅ R2: {file_name} uploaded successfully (Async)")36        return True37    except Exception as e:38        print(f"❌ R2 UPLOAD ERROR: {e}")39        return False40 41async def delete_from_r2(file_name):42    """مسح الملف من R2 بطريقة Async"""43    try:44        async with session.client(45            "s3",46            endpoint_url=ENDPOINT_URL,47            aws_access_key_id=ACCESS_KEY,48            aws_secret_access_key=SECRET_KEY,49        ) as s3:50            await s3.delete_object(Bucket=BUCKET_NAME, Key=file_name)51        print(f"✅ R2: {file_name} deleted successfully")52        return True53    except Exception as e:54        print(f"❌ R2 DELETE ERROR: {e}")55        return False