prepare allocate tags to organizations api

This commit is contained in:
2025-05-27 15:09:22 +03:30
parent bc710c74c6
commit 6f8f9463b0
29 changed files with 951 additions and 48 deletions

View File

@@ -0,0 +1,7 @@
import typing
def detect_file_extension(file_name: str) -> typing.AnyStr:
""" detect extension of a file like: jpg, png, pdf """
extended = file_name.split('.')
return extended[1]

99
common/liara_tools.py Normal file
View File

@@ -0,0 +1,99 @@
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'
def upload_to_liara(file_obj, 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.upload_fileobj(
file_obj,
LIARA_BUCKET_NAME,
file_name,
ExtraArgs={'ACL': 'public-read'} # دسترسی عمومی
)
return f"{LIARA_ENDPOINT}/{LIARA_BUCKET_NAME}/{file_name}"
except NoCredentialsError:
raise Exception("اعتبارنامه‌های AWS معتبر نیستند")
except Exception as e:
raise Exception(f"خطا در آپلود فایل: {e}")
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}")