aboutsummaryrefslogtreecommitdiff
path: root/newspipe/web/views/icon.py
blob: 99535c04245301b42cecd82cb6ad0fc7f38ae05e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import base64

from flask import Blueprint, Response, request

from newspipe.controllers import IconController
from newspipe.web.lib.view_utils import etag_match

icon_bp = Blueprint("icon", __name__, url_prefix="/icon")


@icon_bp.route("/", methods=["GET"])
@etag_match
def icon():
    try:
        icon = IconController().get(url=request.args["url"])
        headers = {"Cache-Control": "max-age=86400", "Content-Type": icon.mimetype}
        return Response(base64.b64decode(icon.content), headers=headers)
    except Exception:
        headers = {"Cache-Control": "max-age=86400", "Content-Type": "image/gif"}
        return Response(
            base64.b64decode(
                "R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
            ),
            headers=headers,
        )
bgstack15