aboutsummaryrefslogtreecommitdiff
path: root/newspipe/controllers/icon.py
diff options
context:
space:
mode:
Diffstat (limited to 'newspipe/controllers/icon.py')
-rw-r--r--newspipe/controllers/icon.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/newspipe/controllers/icon.py b/newspipe/controllers/icon.py
new file mode 100644
index 00000000..0fa7a39e
--- /dev/null
+++ b/newspipe/controllers/icon.py
@@ -0,0 +1,27 @@
+import base64
+import requests
+from newspipe.models import Icon
+from .abstract import AbstractController
+
+
+class IconController(AbstractController):
+ _db_cls = Icon
+ _user_id_key = None
+
+ def _build_from_url(self, attrs):
+ if "url" in attrs and "content" not in attrs:
+ resp = requests.get(attrs["url"], verify=False)
+ attrs.update(
+ {
+ "url": resp.url,
+ "mimetype": resp.headers.get("content-type", None),
+ "content": base64.b64encode(resp.content).decode("utf8"),
+ }
+ )
+ return attrs
+
+ def create(self, **attrs):
+ return super().create(**self._build_from_url(attrs))
+
+ def update(self, filters, attrs):
+ return super().update(filters, self._build_from_url(attrs))
bgstack15