From 8a90996b36f264f98a52671beda2bdd42487080d Mon Sep 17 00:00:00 2001 From: jack1142 <6032823+jack1142@users.noreply.github.com> Date: Sun, 17 Nov 2019 16:25:15 +0100 Subject: [PATCH] [Downloader] Add `Repo.clean_url` and use it in `[p]findcog` (#3129) * enhance(downloader): add `Repo.clean_url` and use it in `[p]findcog` * chore(changelog): add towncrier entries --- changelog.d/downloader/3129.enhance.rst | 1 + changelog.d/downloader/3129.misc.rst | 1 + redbot/cogs/downloader/downloader.py | 2 +- redbot/cogs/downloader/repo_manager.py | 8 ++++++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 changelog.d/downloader/3129.enhance.rst create mode 100644 changelog.d/downloader/3129.misc.rst diff --git a/changelog.d/downloader/3129.enhance.rst b/changelog.d/downloader/3129.enhance.rst new file mode 100644 index 000000000..21b5b8394 --- /dev/null +++ b/changelog.d/downloader/3129.enhance.rst @@ -0,0 +1 @@ +Use sanitized url (without HTTP Basic Auth fragments) in `[p]findcog` command. \ No newline at end of file diff --git a/changelog.d/downloader/3129.misc.rst b/changelog.d/downloader/3129.misc.rst new file mode 100644 index 000000000..685ee9daa --- /dev/null +++ b/changelog.d/downloader/3129.misc.rst @@ -0,0 +1 @@ +Add `clean_url` property to :class:`redbot.cogs.downloader.repo_manager.Repo` which contains sanitized repo URL (without HTTP Basic Auth). \ No newline at end of file diff --git a/redbot/cogs/downloader/downloader.py b/redbot/cogs/downloader/downloader.py index be682431a..b12ac7ae2 100644 --- a/redbot/cogs/downloader/downloader.py +++ b/redbot/cogs/downloader/downloader.py @@ -1150,7 +1150,7 @@ class Downloader(commands.Cog): repo_url = ( _("Missing from installed repos") if cog_installable.repo is None - else cog_installable.repo.url + else cog_installable.repo.clean_url ) cog_name = cog_installable.name else: diff --git a/redbot/cogs/downloader/repo_manager.py b/redbot/cogs/downloader/repo_manager.py index 39ee18dce..276e59114 100644 --- a/redbot/cogs/downloader/repo_manager.py +++ b/redbot/cogs/downloader/repo_manager.py @@ -7,6 +7,7 @@ import pkgutil import shlex import shutil import re +import yarl from concurrent.futures import ThreadPoolExecutor from pathlib import Path from subprocess import run as sp_run, PIPE, CompletedProcess @@ -147,6 +148,13 @@ class Repo(RepoJSONMixin): self._loop = loop if loop is not None else asyncio.get_event_loop() + @property + def clean_url(self): + """Sanitized repo URL (with removed HTTP Basic Auth)""" + url = yarl.URL(self.url) + clean_url = url.with_user(None) + return clean_url + @classmethod async def convert(cls, ctx: commands.Context, argument: str) -> Repo: downloader_cog = ctx.bot.get_cog("Downloader")