Skip to content

Commit 97f375a

Browse files
committed
Placed extended user agent code in separate function and streamlined it per PR comment
1 parent 83086a5 commit 97f375a

2 files changed

Lines changed: 82 additions & 86 deletions

File tree

meraki_v0/rest_session.py

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,46 @@
1010
from .config import *
1111
from .exceptions import *
1212

13+
def user_agent_extended(be_geo_id, caller):
14+
# Generate extended portion of the User-Agent
15+
user_agent_extended = be_geo_id
16+
user_agent_extended = {}
17+
18+
# Mimic pip system data collection per https://github.com/pypa/pip/blob/master/src/pip/_internal/network/session.py
19+
user_agent_extended['implementation'] = {
20+
"name": platform.python_implementation(),
21+
}
22+
23+
if user_agent_extended["implementation"]["name"] in ('CPython','Jython','IronPython'):
24+
user_agent_extended["implementation"]["version"] = platform.python_version()
25+
elif user_agent_extended["implementation"]["name"] == 'PyPy':
26+
if sys.pypy_version_info.releaselevel == 'final':
27+
pypy_version_info = sys.pypy_version_info[:3]
28+
else:
29+
pypy_version_info = sys.pypy_version_info
30+
user_agent_extended["implementation"]["version"] = ".".join(
31+
[str(x) for x in pypy_version_info]
32+
)
33+
34+
if sys.platform.startswith("darwin") and platform.mac_ver()[0]:
35+
user_agent_extended["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]}
36+
37+
if platform.system():
38+
user_agent_extended.setdefault("system", {})["name"] = platform.system()
39+
40+
if platform.release():
41+
user_agent_extended.setdefault("system", {})["release"] = platform.release()
42+
43+
if platform.machine():
44+
user_agent_extended["cpu"] = platform.machine()
45+
46+
if be_geo_id:
47+
user_agent_extended["be_geo_id"] = be_geo_id
48+
49+
if caller:
50+
user_agent_extended["caller"] = caller
51+
52+
return urllib.parse.quote(json.dumps(user_agent_extended))
1353

1454
# Main module interface
1555
class RestSession(object):
@@ -57,53 +97,11 @@ def __init__(
5797
elif self._base_url[-1] == '/':
5898
self._base_url = self._base_url[:-1]
5999

60-
# Generate extended portion of the User-Agent
61-
user_agent_extended = be_geo_id
62-
user_agent_extended = {}
63-
64-
# Mimic pip system data collection per https://github.com/pypa/pip/blob/master/src/pip/_internal/network/session.py
65-
user_agent_extended['implementation'] = {
66-
"name": platform.python_implementation(),
67-
}
68-
69-
if user_agent_extended["implementation"]["name"] == 'CPython':
70-
user_agent_extended["implementation"]["version"] = platform.python_version()
71-
elif user_agent_extended["implementation"]["name"] == 'PyPy':
72-
if sys.pypy_version_info.releaselevel == 'final':
73-
pypy_version_info = sys.pypy_version_info[:3]
74-
else:
75-
pypy_version_info = sys.pypy_version_info
76-
user_agent_extended["implementation"]["version"] = ".".join(
77-
[str(x) for x in pypy_version_info]
78-
)
79-
elif user_agent_extended["implementation"]["name"] == 'Jython':
80-
user_agent_extended["implementation"]["version"] = platform.python_version()
81-
elif user_agent_extended["implementation"]["name"] == 'IronPython':
82-
user_agent_extended["implementation"]["version"] = platform.python_version()
83-
84-
if sys.platform.startswith("darwin") and platform.mac_ver()[0]:
85-
user_agent_extended["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]}
86-
87-
if platform.system():
88-
user_agent_extended.setdefault("system", {})["name"] = platform.system()
89-
90-
if platform.release():
91-
user_agent_extended.setdefault("system", {})["release"] = platform.release()
92-
93-
if platform.machine():
94-
user_agent_extended["cpu"] = platform.machine()
95-
96-
if be_geo_id:
97-
user_agent_extended["be_geo_id"] = be_geo_id
98-
99-
if caller:
100-
user_agent_extended["caller"] = caller
101-
102100
# Update the headers for the session
103101
self._req_session.headers = {
104102
'X-Cisco-Meraki-API-Key': self._api_key,
105103
'Content-Type': 'application/json',
106-
'User-Agent': 'python-meraki/0.100.2' + urllib.parse.quote(json.dumps(user_agent_extended)),
104+
'User-Agent': 'python-meraki/0.100.2' + user_agent_extended(be_geo_id, caller),
107105
}
108106

109107
# Log API calls

meraki_v1/rest_session.py

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,46 @@
1010
from .config import *
1111
from .exceptions import *
1212

13+
def user_agent_extended(be_geo_id, caller):
14+
# Generate extended portion of the User-Agent
15+
user_agent_extended = be_geo_id
16+
user_agent_extended = {}
17+
18+
# Mimic pip system data collection per https://github.com/pypa/pip/blob/master/src/pip/_internal/network/session.py
19+
user_agent_extended['implementation'] = {
20+
"name": platform.python_implementation(),
21+
}
22+
23+
if user_agent_extended["implementation"]["name"] in ('CPython','Jython','IronPython'):
24+
user_agent_extended["implementation"]["version"] = platform.python_version()
25+
elif user_agent_extended["implementation"]["name"] == 'PyPy':
26+
if sys.pypy_version_info.releaselevel == 'final':
27+
pypy_version_info = sys.pypy_version_info[:3]
28+
else:
29+
pypy_version_info = sys.pypy_version_info
30+
user_agent_extended["implementation"]["version"] = ".".join(
31+
[str(x) for x in pypy_version_info]
32+
)
33+
34+
if sys.platform.startswith("darwin") and platform.mac_ver()[0]:
35+
user_agent_extended["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]}
36+
37+
if platform.system():
38+
user_agent_extended.setdefault("system", {})["name"] = platform.system()
39+
40+
if platform.release():
41+
user_agent_extended.setdefault("system", {})["release"] = platform.release()
42+
43+
if platform.machine():
44+
user_agent_extended["cpu"] = platform.machine()
45+
46+
if be_geo_id:
47+
user_agent_extended["be_geo_id"] = be_geo_id
48+
49+
if caller:
50+
user_agent_extended["caller"] = caller
51+
52+
return urllib.parse.quote(json.dumps(user_agent_extended))
1353

1454
# Main module interface
1555
class RestSession(object):
@@ -57,53 +97,11 @@ def __init__(
5797
elif self._base_url[-1] == '/':
5898
self._base_url = self._base_url[:-1]
5999

60-
# Generate extended portion of the User-Agent
61-
user_agent_extended = be_geo_id
62-
user_agent_extended = {}
63-
64-
# Mimic pip system data collection per https://github.com/pypa/pip/blob/master/src/pip/_internal/network/session.py
65-
user_agent_extended['implementation'] = {
66-
"name": platform.python_implementation(),
67-
}
68-
69-
if user_agent_extended["implementation"]["name"] == 'CPython':
70-
user_agent_extended["implementation"]["version"] = platform.python_version()
71-
elif user_agent_extended["implementation"]["name"] == 'PyPy':
72-
if sys.pypy_version_info.releaselevel == 'final':
73-
pypy_version_info = sys.pypy_version_info[:3]
74-
else:
75-
pypy_version_info = sys.pypy_version_info
76-
user_agent_extended["implementation"]["version"] = ".".join(
77-
[str(x) for x in pypy_version_info]
78-
)
79-
elif user_agent_extended["implementation"]["name"] == 'Jython':
80-
user_agent_extended["implementation"]["version"] = platform.python_version()
81-
elif user_agent_extended["implementation"]["name"] == 'IronPython':
82-
user_agent_extended["implementation"]["version"] = platform.python_version()
83-
84-
if sys.platform.startswith("darwin") and platform.mac_ver()[0]:
85-
user_agent_extended["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]}
86-
87-
if platform.system():
88-
user_agent_extended.setdefault("system", {})["name"] = platform.system()
89-
90-
if platform.release():
91-
user_agent_extended.setdefault("system", {})["release"] = platform.release()
92-
93-
if platform.machine():
94-
user_agent_extended["cpu"] = platform.machine()
95-
96-
if be_geo_id:
97-
user_agent_extended["be_geo_id"] = be_geo_id
98-
99-
if caller:
100-
user_agent_extended["caller"] = caller
101-
102100
# Update the headers for the session
103101
self._req_session.headers = {
104102
'Authorization': 'Bearer ' + self._api_key,
105103
'Content-Type': 'application/json',
106-
'User-Agent': 'python-meraki/1.0.0b1 ' + urllib.parse.quote(json.dumps(user_agent_extended)),
104+
'User-Agent': 'python-meraki/1.0.0b1 ' + user_agent_extended(be_geo_id, caller),
107105
}
108106

109107
# Log API calls

0 commit comments

Comments
 (0)