Source code for indieweb_utils.trackback.receive

from typing import Tuple
from urllib.parse import urlparse

SUCCESSFUL_PING = """
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
    <error>0</error>
</response>
"""

ERROR_PING = """
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
    <error>1</error>
    <message>{}</message>
</response>
"""


[docs]def process_trackback( url: str, content_type: str = None, method: str = None, valid_domains: list = None ) -> Tuple[str, bool]: """ Validate and process a trackback request. :param url: The URL to send the trackback to. :param content_type: The content type of the request. :param method: The request method. :param valid_domains: A list of valid domains to accept trackbacks from. :returns: The trackback response and whether the Trackback is valid. :rtype: List[str, bool] Example: .. code-block:: python from indieweb_utils import process_trackback process_trackback( 'http://example.com/post/123', content_type='application/x-www-form-urlencoded', method='POST' ) """ if method and method != "POST": return ERROR_PING.format("Invalid request method."), False if content_type and content_type != "application/x-www-form-urlencoded": return ERROR_PING.format("Invalid content type."), False domain = urlparse(url).netloc if valid_domains and domain not in valid_domains: return ERROR_PING.format("Invalid domain."), False return SUCCESSFUL_PING, True