]> git.lizzy.rs Git - cheatdb.git/commitdiff
Make OpenGraph URLs absolute
authorrubenwardy <rw@rubenwardy.com>
Thu, 23 Apr 2020 22:49:46 +0000 (23:49 +0100)
committerrubenwardy <rw@rubenwardy.com>
Thu, 23 Apr 2020 22:51:10 +0000 (23:51 +0100)
app/models.py
app/templates/packages/view.html
app/utils.py

index 582418943d92c7988a51250f0846931a01198d35..3d65b322ad7185f9e39a9d99aed88d80a43de8ea 100644 (file)
@@ -578,13 +578,25 @@ class Package(db.Model):
                screenshot = self.screenshots.filter_by(approved=True).order_by(db.asc(PackageScreenshot.id)).first()
                return screenshot.getThumbnailURL(level) if screenshot is not None else None
 
-       def getMainScreenshotURL(self):
+       def getMainScreenshotURL(self, absolute=False):
                screenshot = self.screenshots.filter_by(approved=True).order_by(db.asc(PackageScreenshot.id)).first()
-               return screenshot.url if screenshot is not None else None
+               if screenshot is None:
+                       return None
 
-       def getDetailsURL(self):
-               return url_for("packages.view",
-                               author=self.author.username, name=self.name)
+               if absolute:
+                       from app.utils import abs_url
+                       return abs_url(screenshot.url)
+               else:
+                       return screenshot.url
+
+       def getDetailsURL(self, absolute=False):
+               if absolute:
+                       from app.utils import abs_url_for
+                       return abs_url_for("packages.view",
+                                       author=self.author.username, name=self.name)
+               else:
+                       return url_for("packages.view",
+                                       author=self.author.username, name=self.name)
 
        def getEditURL(self):
                return url_for("packages.create_edit",
index 09d9599f39363fff1c435713ae6849c3a4b605b3..4fe6b51571972d2f194ef6c1cc20f5ddb3ee0034 100644 (file)
@@ -10,9 +10,9 @@
        <meta name="og:title" content="{{ package.title }}"/>
        <meta name="og:description" content="{{ package.short_desc }}"/>
        <meta name="description" content="{{ package.short_desc }}"/>
-       <meta name="og:url" content="{{ package.getDetailsURL() }}"/>
+       <meta name="og:url" content="{{ package.getDetailsURL(absolute=True) }}"/>
        {% if package.getMainScreenshotURL() %}
-       <meta name="og:image" content="{{ package.getMainScreenshotURL() }}"/>
+       <meta name="og:image" content="{{ package.getMainScreenshotURL(absolute=True) }}"/>
        {% endif %}
 {% endblock %}
 
index 727b5b554c8487b6faeba71bd801cd8484159c73..73ce4e7b01ad99e605968f7428b54f5420117890 100644 (file)
@@ -21,11 +21,15 @@ from flask_login import login_user, logout_user
 from .models import *
 from . import app
 import random, string, os, imghdr
+from urllib.parse import urljoin
 
 def abs_url_for(path, **kwargs):
        scheme = "https" if app.config["BASE_URL"][:5] == "https" else "http"
        return url_for(path, _external=True, _scheme=scheme, **kwargs)
 
+def abs_url(path):
+       return urljoin(app.config["BASE_URL"], path)
+
 def get_int_or_abort(v, default=None):
        try:
                return int(v or default)