diff --git a/lib/galaxy/app.py b/lib/galaxy/app.py index f45c9aa83abc..fa36beb242d5 100644 --- a/lib/galaxy/app.py +++ b/lib/galaxy/app.py @@ -133,6 +133,7 @@ build_tours_registry, ToursRegistry, ) +from galaxy.util import user_agent # noqa: F401 from galaxy.util import ( ExecutionTimer, heartbeat, diff --git a/lib/galaxy/tools/data_fetch.py b/lib/galaxy/tools/data_fetch.py index 19e272ca4b6b..fcf92be724d6 100644 --- a/lib/galaxy/tools/data_fetch.py +++ b/lib/galaxy/tools/data_fetch.py @@ -26,6 +26,7 @@ stream_to_file, stream_url_to_file, ) +from galaxy.util import user_agent # noqa: F401 from galaxy.util import ( in_directory, safe_makedirs, diff --git a/lib/galaxy/util/user_agent.py b/lib/galaxy/util/user_agent.py new file mode 100644 index 000000000000..4e914d816ccb --- /dev/null +++ b/lib/galaxy/util/user_agent.py @@ -0,0 +1,34 @@ +import urllib + +import requests + +from galaxy.version import VERSION + + +def __append_word_to_user_agent(word): + + # set requests User-Agent + old_default_user_agent = requests.utils.default_user_agent + + def new_default_user_agent(*args): + return f"{old_default_user_agent(*args)} {word}" + + requests.utils.default_user_agent = new_default_user_agent + + # set urllib User-Agent + old_build_opener = urllib.request.build_opener + + def modify_user_agent_header(header): + if header[0].lower() == "user-agent": + return (header[0], f"{header[1]} {word}") + return header + + def new_build_opener(*handlers): + opener = old_build_opener(*handlers) + opener.addheaders = [modify_user_agent_header(header) for header in opener.addheaders] + return opener + + urllib.request.build_opener = new_build_opener + + +__append_word_to_user_agent(f"galaxy/{VERSION}")