26 lines
663 B
Python
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 |