Skip to content

Commit 8b2a7fb

Browse files
authored
Merge pull request #34 from lutraconsulting/add_user-agent_header_to_request#31
Add user agent header to request#31
2 parents 9adb76e + f339131 commit 8b2a7fb

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

mergin/client.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@
1010
import math
1111
import hashlib
1212
import copy
13+
import platform
1314
from datetime import datetime, timezone
1415
import concurrent.futures
1516

17+
from pip._vendor import distro
18+
1619
from .utils import save_to_file, generate_checksum, move_file, DateTimeEncoder, int_version, find
1720

1821
this_dir = os.path.dirname(os.path.realpath(__file__))
@@ -535,12 +538,13 @@ def decode_token_data(token):
535538

536539

537540
class MerginClient:
538-
def __init__(self, url, auth_token=None, login=None, password=None):
541+
def __init__(self, url, auth_token=None, login=None, password=None, plugin_version=None):
539542
self.url = url
540543

541544
self._auth_params = None
542545
self._auth_session = None
543546
self._user_info = None
547+
self.client_version = plugin_version if plugin_version is not None else "Python-client/--"
544548
if auth_token:
545549
token_data = decode_token_data(auth_token)
546550
self._auth_session = {
@@ -568,6 +572,14 @@ def _do_request(self, request):
568572

569573
if self._auth_session:
570574
request.add_header("Authorization", self._auth_session["token"])
575+
system_version = "Unknown"
576+
if platform.system() == "Linux":
577+
system_version = distro.linux_distribution()[0]
578+
elif platform.system() == "Windows":
579+
system_version = platform.win32_ver()[0]
580+
elif platform.system() == "Mac":
581+
system_version = platform.mac_ver()[0]
582+
request.add_header("User-Agent", f"{self.client_version} ({platform.system()}/{system_version})")
571583
try:
572584
return self.opener.open(request)
573585
except urllib.error.HTTPError as e:

0 commit comments

Comments
 (0)