2020-12-07 10:15:07 +01:00

73 lines
2.2 KiB
Python

from typing import Union
import requests
from django.conf import settings
class MinioService:
@staticmethod
def check() -> bool:
print("Checking MinIO availability")
try:
url= settings.AWS_HOST
r = requests.put(url)
if not (r.status_code >= 200 and r.status_code < 500):
return False
except:
return False
return True
@staticmethod
def create_file(filename: str, file: bytes) -> bool:
"""Create / save (or overwrite) an file on the minio storage.
:param filename: filename
:param file: bytes representation of the file
:return: Whether file was successfully uploaded
"""
try:
url= settings.AWS_HOST + filename
headers = {'Content-Type': 'binary/octet-stream'}
r = requests.put(url,data=file,headers=headers)
if r.status_code == 200:
print("Successfully uploaded a file!")
else:
print("Something went wrong while creating")
except:
return False
return True
@staticmethod
def read_file(filename: str) -> bytes:
"""Read file on the minio storage.
:param filename: filename
:return: bytes representation of the file or None on error
"""
file_bytes: Union[bytes, None] = None
try:
url = settings.AWS_HOST + filename
response = requests.get(url, stream=True)
file_bytes=response.content
except:
print("Error downloading file from minio")
return file_bytes
@staticmethod
def delete_file(filename: str) -> bool:
"""Delete an file from the dropbox storage.
:param filename: filename of the file
:return: Whether file was successfully deleted
"""
try:
url = settings.AWS_HOST + filename
r = requests.delete(url)
if r.status_code == 204:
print("Successfully deleted a file!")
else:
print("Something went wrong while deleting")
except:
return False
return True