utils.github_webhook: html.escape some PR/issue title and commit messages to avoid Telegram response error code 400: Bad Request: Can't parse entities: Unspported start tag *** at byte offset ***
This commit is contained in:
+13
-7
@@ -20,6 +20,7 @@
|
|||||||
import hmac
|
import hmac
|
||||||
import logging
|
import logging
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
|
from html import escape
|
||||||
from json.decoder import JSONDecodeError
|
from json.decoder import JSONDecodeError
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from typing import Union
|
from typing import Union
|
||||||
@@ -105,9 +106,11 @@ async def _format_delete(payload: dict) -> str:
|
|||||||
|
|
||||||
async def _format_discussion(payload: dict) -> str:
|
async def _format_discussion(payload: dict) -> str:
|
||||||
discussion = payload['discussion']
|
discussion = payload['discussion']
|
||||||
url = discussion['html_url']
|
escaped_title = escape(discussion['title'])
|
||||||
title = f"{discussion['title']} \u00b7 Discussion #{discussion['number']}"
|
return "\u2192 <a href=\"{url}\">{title}</a>".format(
|
||||||
return f"\u2192 <a href=\"{url}\">{title}</a>"
|
url=discussion['html_url'],
|
||||||
|
title=f"{escaped_title} \u00b7 Discussion #{discussion['number']}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def _format_fork(payload: dict) -> str:
|
async def _format_fork(payload: dict) -> str:
|
||||||
@@ -123,7 +126,7 @@ async def _format_issues(payload: dict) -> str:
|
|||||||
issue = payload['issue']
|
issue = payload['issue']
|
||||||
return "\u2192 <a href=\"{url}\">{title}</a>".format(
|
return "\u2192 <a href=\"{url}\">{title}</a>".format(
|
||||||
url=issue['html_url'],
|
url=issue['html_url'],
|
||||||
title=f"{issue['title']} \u00b7 Issue #{issue['number']}"
|
title=f"{escape(issue['title'])} \u00b7 Issue #{issue['number']}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -146,8 +149,11 @@ async def _format_public(payload: dict) -> str:
|
|||||||
async def _format_pull_request(payload: dict) -> str:
|
async def _format_pull_request(payload: dict) -> str:
|
||||||
pr = payload['pull_request']
|
pr = payload['pull_request']
|
||||||
url = pr['html_url']
|
url = pr['html_url']
|
||||||
user = pr['user']['login']
|
title = "{pr_title} by {user} \u00b7 Pull Request #{number}".format(
|
||||||
title = f"{pr['title']} by {user} \u00b7 Pull Request #{payload['number']}"
|
pr_title=escape(pr['title']),
|
||||||
|
user=pr['user']['login'],
|
||||||
|
number=payload['number']
|
||||||
|
)
|
||||||
return f"\u2192 <a href=\"{url}\">{title}</a>"
|
return f"\u2192 <a href=\"{url}\">{title}</a>"
|
||||||
|
|
||||||
|
|
||||||
@@ -158,7 +164,7 @@ async def _format_push(payload: dict) -> str:
|
|||||||
"\u2192 "
|
"\u2192 "
|
||||||
"<code>{name}</code> {message} [<a href=\"{url}\">{cid}</a>]".format(
|
"<code>{name}</code> {message} [<a href=\"{url}\">{cid}</a>]".format(
|
||||||
name=commit['author']['username'],
|
name=commit['author']['username'],
|
||||||
message=commit['message'],
|
message=escape(commit['message']),
|
||||||
url=commit['url'],
|
url=commit['url'],
|
||||||
cid=commit['id'][:7]
|
cid=commit['id'][:7]
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user