Skip to content

Commit 62cd91e

Browse files
authored
Merge pull request #39 from gfirem/cli-version-header
Appended the new versions to the User-Agent Header
2 parents fa31ba1 + 5493d50 commit 62cd91e

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

akamai/edgegrid/edgegrid.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import base64
2929
import re
3030
import sys
31+
import os
3132
from requests.auth import AuthBase
3233
from time import gmtime, strftime
3334

@@ -159,6 +160,29 @@ def make_content_hash(self, r):
159160
logger.debug("content hash is '%s'", content_hash)
160161
return content_hash
161162

163+
def get_header_versions(self, header=None):
164+
if header is None:
165+
header = {}
166+
167+
version_header = ''
168+
akamai_cli = os.getenv('AKAMAI_CLI')
169+
akamai_cli_version = os.getenv('AKAMAI_CLI_VERSION')
170+
if akamai_cli and akamai_cli_version:
171+
version_header += " AkamaiCLI/" + akamai_cli_version
172+
173+
akamai_cli_command = os.getenv('AKAMAI_CLI_COMMAND')
174+
akamai_cli_command_version = os.getenv('AKAMAI_CLI_COMMAND_VERSION')
175+
if akamai_cli_command and akamai_cli_command_version:
176+
version_header += " AkamaiCLI-" + akamai_cli_command + "/" + akamai_cli_command_version
177+
178+
if version_header != '':
179+
if 'User-Agent' not in header:
180+
header['User-Agent'] = version_header.strip()
181+
else:
182+
header['User-Agent'] += version_header
183+
184+
return header
185+
162186
def make_data_to_sign(self, r, auth_header):
163187
parsed_url = urlparse(r.url)
164188

@@ -167,6 +191,8 @@ def make_data_to_sign(self, r, auth_header):
167191
else:
168192
netloc = parsed_url.netloc
169193

194+
self.get_header_versions(r.headers)
195+
170196
data_to_sign = '\t'.join([
171197
r.method,
172198
parsed_url.scheme,

akamai/edgegrid/test/test_edgegrid.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,42 @@ def test_edgerc_headers(self):
145145
auth = EdgeGridAuth.from_edgerc(os.path.join(mydir, 'sample_edgerc'), 'headers')
146146
self.assertEqual(auth.headers_to_sign, ['x-mything1', 'x-mything2'])
147147

148+
def test_get_header_versions(self):
149+
auth = EdgeGridAuth.from_edgerc(os.path.join(mydir, 'sample_edgerc'), 'headers')
150+
header = auth.get_header_versions()
151+
self.assertFalse('user-agent' in header)
152+
153+
header = auth.get_header_versions({'User-Agent': 'testvalue'})
154+
self.assertTrue('User-Agent' in header)
155+
156+
os.environ["AKAMAI_CLI"] = '1.0.0'
157+
os.environ["AKAMAI_CLI_VERSION"] = '1.0.0'
158+
159+
header = auth.get_header_versions()
160+
self.assertTrue('User-Agent' in header)
161+
self.assertEqual(header['User-Agent'], ' AkamaiCLI/1.0.0')
162+
163+
os.environ["AKAMAI_CLI_COMMAND"] = '1.0.0'
164+
os.environ["AKAMAI_CLI_COMMAND_VERSION"] = '1.0.0'
165+
166+
header = auth.get_header_versions()
167+
self.assertTrue('User-Agent' in header)
168+
self.assertEqual(header['User-Agent'], ' AkamaiCLI/1.0.0 AkamaiCLI-1.0.0/1.0.0')
169+
170+
header = auth.get_header_versions({'User-Agent': 'testvalue'})
171+
self.assertTrue('User-Agent' in header)
172+
self.assertEqual(header['User-Agent'], 'testvalue AkamaiCLI/1.0.0 AkamaiCLI-1.0.0/1.0.0')
173+
174+
del os.environ['AKAMAI_CLI']
175+
del os.environ['AKAMAI_CLI_VERSION']
176+
del os.environ['AKAMAI_CLI_COMMAND']
177+
del os.environ['AKAMAI_CLI_COMMAND_VERSION']
178+
179+
self.assertFalse('AKAMAI_CLI' in os.environ)
180+
self.assertFalse('AKAMAI_CLI_VERSION' in os.environ)
181+
self.assertFalse('AKAMAI_CLI_COMMAND' in os.environ)
182+
self.assertFalse('AKAMAI_CLI_COMMAND_VERSION' in os.environ)
183+
148184
def test_edgerc_from_object(self):
149185
auth = EdgeGridAuth.from_edgerc(EdgeRc(os.path.join(mydir, 'sample_edgerc')))
150186
self.assertEqual(auth.client_token, 'xxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx')
@@ -214,6 +250,7 @@ def suite():
214250
suite.addTest(EGSimpleTest('test_edgerc_broken'))
215251
suite.addTest(EGSimpleTest('test_edgerc_unparseable'))
216252
suite.addTest(EGSimpleTest('test_edgerc_headers'))
253+
suite.addTest(EGSimpleTest('test_get_header_versions'))
217254
suite.addTest(EGSimpleTest('test_edgerc_from_object'))
218255

219256
return suite

0 commit comments

Comments
 (0)