from botocore.exceptions import NoCredentialsError import boto3 import logging from PIL import Image import io import base64 LIARA_ENDPOINT = 'https://storage.c2.liara.space' LIARA_BUCKET_NAME = 'ticket-rasadyar' LIARA_ACCESS_KEY = "gvqohestrakmqi6n" LIARA_SECRET_KEY = '7240fdd8-59bc-4f02-b5e6-4a124e37fa0e' RASADYAR_ENDPOINT = 'https://s3.rasadyar.com' RASADYAR_BUCKET_NAME = 'rasadyar' RASADYAR_ACCESS_KEY = "zG3ewsbYsTqCmuws" RASADYAR_SECRET_KEY = 'RInUMB78zlQZp6CNf8+sRoSh2cNDHcGQhXrLnTJ1AuI=' def upload_to_liara(image, name): s3 = boto3.client( 's3', endpoint_url=RASADYAR_ENDPOINT, aws_access_key_id=RASADYAR_ACCESS_KEY, aws_secret_access_key=RASADYAR_SECRET_KEY ) s3.upload_fileobj( image, RASADYAR_BUCKET_NAME, name, ExtraArgs={'ACL': 'public-read'} # دسترسی عمومی ) return f"{RASADYAR_ENDPOINT}/{RASADYAR_BUCKET_NAME}/{name}" def connect(): logging.basicConfig(level=logging.INFO) try: s3 = boto3.client( 's3', endpoint_url=LIARA_ENDPOINT, aws_access_key_id=LIARA_ACCESS_KEY, aws_secret_access_key=LIARA_SECRET_KEY ) except Exception as exc: logging.info(exc) return s3 def upload_object_resize_to_liara(image_data, object_name): try: imgdata = base64.b64decode(image_data) img = Image.open(io.BytesIO(imgdata)) img.thumbnail((500, 500)) buffer = io.BytesIO() img.save(buffer, format="PNG") buffer.seek(0) s3_resource = boto3.resource( 's3', endpoint_url=LIARA_ENDPOINT, aws_access_key_id=LIARA_ACCESS_KEY, aws_secret_access_key=LIARA_SECRET_KEY ) bucket = s3_resource.Bucket(LIARA_BUCKET_NAME) bucket.put_object( ACL='public-read', Body=buffer, Key=object_name, ContentType='image/png' ) return f"{LIARA_ENDPOINT}/{LIARA_BUCKET_NAME}/{object_name}" except Exception as e: raise Exception(f"خطا در آپلود فایل: {e}") def delete_file_from_liara(file_name): try: s3 = boto3.client( 's3', endpoint_url=LIARA_ENDPOINT, aws_access_key_id=LIARA_ACCESS_KEY, aws_secret_access_key=LIARA_SECRET_KEY ) s3.delete_object(Bucket=LIARA_BUCKET_NAME, Key=file_name) except NoCredentialsError: raise Exception("اعتبارنامه‌های AWS معتبر نیستند") except Exception as e: raise Exception(f"خطا در آپلود فایل: {e}")