2021-03-22 15:39:50 +11:00

26 lines
663 B
Python

from django.core.files.storage import Storage
import requests
class HTTPStorage(Storage):
def __init__(self, protocol='https'):
self.protocol = protocol
def _open(self, name, mode='rb'):
if mode != 'rb':
raise IOError("Mode must be 'rb'")
r = requests.get(self.url(name), stream=True)
r.raise_for_status()
return r.raw
def _save(self, name, content):
raise NotImplementedError("Unable to save to web locations")
def url(self, name):
return f"{self.protocol}:{name}"
def exists(self, name):
r = requests.head(self.url(name))
return r.status_code == 200