Skip to content

Commit

Permalink
Factor out read_the_docs_site_url()
Browse files Browse the repository at this point in the history
  • Loading branch information
AA-Turner committed Jan 30, 2025
1 parent 43d177c commit 27c8f79
Showing 1 changed file with 26 additions and 22 deletions.
48 changes: 26 additions & 22 deletions sphinxext/opengraph/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import os
from pathlib import Path
from typing import TYPE_CHECKING
from urllib.parse import urljoin, urlparse, urlsplit, urlunparse
from urllib.parse import urljoin, urlparse, urlsplit, urlunsplit

import docutils.nodes as nodes

Expand Down Expand Up @@ -100,27 +100,7 @@ def get_tags(
tags["og:type"] = config.ogp_type

if not config.ogp_site_url and os.getenv("READTHEDOCS"):
if config.html_baseurl is not None:
# readthedocs uses ``html_baseurl`` for Sphinx > 1.8
parse_result = urlsplit(config.html_baseurl)
else:
# readthedocs addons no longer configures ``html_baseurl``
if rtd_canonical_url := os.getenv("READTHEDOCS_CANONICAL_URL"):
parse_result = urlsplit(rtd_canonical_url)
else:
raise OSError("ReadTheDocs did not provide a valid canonical URL!")

# Grab root url from canonical url
config.ogp_site_url = urlunparse(
(
parse_result.scheme,
parse_result.netloc,
parse_result.path,
"",
"",
"",
)
)
config.ogp_site_url = read_the_docs_site_url(config.html_baseurl)

# url tag
# Get the URL of the specific page
Expand Down Expand Up @@ -248,6 +228,30 @@ def get_tags(
)


def read_the_docs_site_url(html_baseurl: str | None) -> str:
if html_baseurl is not None:
# readthedocs uses ``html_baseurl`` for Sphinx > 1.8
parse_result = urlsplit(html_baseurl)
else:
# readthedocs addons no longer configures ``html_baseurl``
if rtd_canonical_url := os.getenv("READTHEDOCS_CANONICAL_URL"):
parse_result = urlsplit(rtd_canonical_url)
else:
raise OSError("ReadTheDocs did not provide a valid canonical URL!")

# Grab root url from canonical url
return urlunsplit(
(
parse_result.scheme,
parse_result.netloc,
parse_result.path,
"",
"",
"",
)
)


def social_card_for_page(
config_social: dict[str, bool | str],
site_name: str,
Expand Down

0 comments on commit 27c8f79

Please sign in to comment.