edgegrid-python 2.0.0__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/LICENSE +2 -2
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/MANIFEST.in +1 -0
- {edgegrid_python-2.0.0/edgegrid_python.egg-info → edgegrid-python-2.0.2}/PKG-INFO +10 -16
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/README.md +5 -5
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/__init__.py +2 -2
- edgegrid-python-2.0.2/akamai/edgegrid/test/testcases.json +239 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2/edgegrid_python.egg-info}/PKG-INFO +10 -16
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/SOURCES.txt +1 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/requires.txt +0 -4
- edgegrid-python-2.0.2/requirements.txt +20 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/setup.py +3 -7
- edgegrid_python-2.0.0/requirements.txt +0 -38
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/__init__.py +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/edgegrid.py +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/edgerc.py +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/__init__.py +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/conftest.py +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/edgerc_that_doesnt_parse +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/sample_edgerc +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/test_edgegrid.py +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/testdata.json +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/dependency_links.txt +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/namespace_packages.txt +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/top_level.txt +0 -0
- {edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/setup.cfg +0 -0
|
@@ -176,10 +176,10 @@ recommend that a file or class name and description of purpose be included on
|
|
|
176
176
|
the same "printed page" as the copyright notice for easier identification within
|
|
177
177
|
third-party archives.
|
|
178
178
|
|
|
179
|
-
Copyright
|
|
179
|
+
Copyright 2025 Akamai Technologies, Inc. All rights reserved.
|
|
180
180
|
|
|
181
181
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
182
|
-
you may not use
|
|
182
|
+
you may not use these files except in compliance with the License.
|
|
183
183
|
You may obtain a copy of the License at
|
|
184
184
|
|
|
185
185
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: edgegrid-python
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: {OPEN} client authentication protocol for python-requests
|
|
5
5
|
Home-page: https://github.com/akamai/AkamaiOPEN-edgegrid-python
|
|
6
6
|
License: Apache 2.0
|
|
7
|
+
Platform: UNKNOWN
|
|
7
8
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
8
9
|
Classifier: Programming Language :: Python :: 3
|
|
9
10
|
Requires-Python: >=3.9
|
|
10
11
|
Description-Content-Type: text/markdown
|
|
11
|
-
License-File: LICENSE
|
|
12
|
-
Requires-Dist: requests>=2.24.0
|
|
13
|
-
Requires-Dist: requests_toolbelt>=0.9.1
|
|
14
|
-
Requires-Dist: pyOpenSSL>=19.1.0
|
|
15
|
-
Requires-Dist: ndg-httpsclient>=0.5.1
|
|
16
|
-
Requires-Dist: pyasn1>=0.4.8
|
|
17
|
-
Requires-Dist: urllib3>=1.25.10
|
|
18
12
|
Provides-Extra: dev
|
|
19
|
-
|
|
20
|
-
Requires-Dist: pytest>=6.1.0; extra == "dev"
|
|
21
|
-
Requires-Dist: pytest-cov>=2.12.1; extra == "dev"
|
|
13
|
+
License-File: LICENSE
|
|
22
14
|
|
|
23
15
|
# EdgeGrid for Python
|
|
24
16
|
|
|
@@ -47,9 +39,9 @@ pip install edgegrid-python
|
|
|
47
39
|
We provide authentication credentials through an API client. Requests to the API are signed with a timestamp and are executed immediately.
|
|
48
40
|
|
|
49
41
|
1. [Create authentication credentials](https://techdocs.akamai.com/developer/docs/set-up-authentication-credentials).
|
|
50
|
-
|
|
51
|
-
2. Place your credentials in an EdgeGrid resource file, `.edgerc`, under a heading of `[default]` at your local home directory
|
|
52
|
-
|
|
42
|
+
|
|
43
|
+
2. Place your credentials in an EdgeGrid resource file, `.edgerc`, under a heading of `[default]` at your local home directory.
|
|
44
|
+
|
|
53
45
|
```
|
|
54
46
|
[default]
|
|
55
47
|
client_secret = C113nt53KR3TN6N90yVuAgICxIRwsObLi0E67/N8eRN=
|
|
@@ -297,8 +289,10 @@ To report an issue or make a suggestion, create a new [GitHub issue](https://git
|
|
|
297
289
|
|
|
298
290
|
## License
|
|
299
291
|
|
|
300
|
-
Copyright
|
|
292
|
+
Copyright 2025 Akamai Technologies, Inc. All rights reserved.
|
|
301
293
|
|
|
302
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
294
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
303
295
|
|
|
304
296
|
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
297
|
+
|
|
298
|
+
|
|
@@ -25,9 +25,9 @@ pip install edgegrid-python
|
|
|
25
25
|
We provide authentication credentials through an API client. Requests to the API are signed with a timestamp and are executed immediately.
|
|
26
26
|
|
|
27
27
|
1. [Create authentication credentials](https://techdocs.akamai.com/developer/docs/set-up-authentication-credentials).
|
|
28
|
-
|
|
29
|
-
2. Place your credentials in an EdgeGrid resource file, `.edgerc`, under a heading of `[default]` at your local home directory
|
|
30
|
-
|
|
28
|
+
|
|
29
|
+
2. Place your credentials in an EdgeGrid resource file, `.edgerc`, under a heading of `[default]` at your local home directory.
|
|
30
|
+
|
|
31
31
|
```
|
|
32
32
|
[default]
|
|
33
33
|
client_secret = C113nt53KR3TN6N90yVuAgICxIRwsObLi0E67/N8eRN=
|
|
@@ -275,8 +275,8 @@ To report an issue or make a suggestion, create a new [GitHub issue](https://git
|
|
|
275
275
|
|
|
276
276
|
## License
|
|
277
277
|
|
|
278
|
-
Copyright
|
|
278
|
+
Copyright 2025 Akamai Technologies, Inc. All rights reserved.
|
|
279
279
|
|
|
280
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
280
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
281
281
|
|
|
282
282
|
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
@@ -36,6 +36,6 @@ from .edgerc import EdgeRc
|
|
|
36
36
|
__all__ = ['EdgeGridAuth', 'EdgeRc']
|
|
37
37
|
|
|
38
38
|
__title__ = 'edgegrid-python'
|
|
39
|
-
__version__ = '2.0.
|
|
39
|
+
__version__ = '2.0.2'
|
|
40
40
|
__license__ = 'Apache 2.0'
|
|
41
|
-
__copyright__ = 'Copyright
|
|
41
|
+
__copyright__ = 'Copyright 2025 Akamai Technologies'
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"testName": "simple GET",
|
|
4
|
+
"request": {
|
|
5
|
+
"method": "GET",
|
|
6
|
+
"path": "/",
|
|
7
|
+
"headers": [
|
|
8
|
+
{
|
|
9
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=tL+y4hxyHxgWVD30X3pWnGKHcPzmrIF+LThiAOhMxYU=",
|
|
14
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/\t\t\t"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"testName": "GET with querystring",
|
|
18
|
+
"request": {
|
|
19
|
+
"method": "GET",
|
|
20
|
+
"path": "/testapi/v1/t1?p1=1&p2=2",
|
|
21
|
+
"headers": [
|
|
22
|
+
{
|
|
23
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=hKDH1UlnQySSHjvIcZpDMbQHihTQ0XyVAKZaApabdeA=",
|
|
28
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t1?p1=1&p2=2\t\t\t"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"testName": "POST inside limit",
|
|
32
|
+
"request": {
|
|
33
|
+
"method": "POST",
|
|
34
|
+
"path": "/testapi/v1/t3",
|
|
35
|
+
"data": "datadatadatadatadatadatadatadata",
|
|
36
|
+
"headers": [
|
|
37
|
+
{
|
|
38
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=hXm4iCxtpN22m4cbZb4lVLW5rhX8Ca82vCFqXzSTPe4=",
|
|
43
|
+
"expectedDataToSign": "POST\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t3\t\tfDimoYqXOLntG3If/Z0K2aS9I19Pkv9P5OMCoL8lY0w=\t"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"testName": "POST too large",
|
|
47
|
+
"request": {
|
|
48
|
+
"method": "POST",
|
|
49
|
+
"path": "/testapi/v1/t3",
|
|
50
|
+
"data": "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
51
|
+
"headers": [
|
|
52
|
+
{
|
|
53
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=6Q6PiTipLae6n4GsSIDTCJ54bEbHUBp+4MUXrbQCBoY=",
|
|
58
|
+
"expectedDataToSign": "POST\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t3\t\tiysZKJ78BqF0NvDrpv9Hc3pJBWC5f5apR4qUK/Qfo5k=\t"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"testName": "POST length equals max_body",
|
|
62
|
+
"request": {
|
|
63
|
+
"method": "POST",
|
|
64
|
+
"path": "/testapi/v1/t3",
|
|
65
|
+
"data": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
66
|
+
"headers": [
|
|
67
|
+
{
|
|
68
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=6Q6PiTipLae6n4GsSIDTCJ54bEbHUBp+4MUXrbQCBoY=",
|
|
73
|
+
"expectedDataToSign": "POST\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t3\t\tiysZKJ78BqF0NvDrpv9Hc3pJBWC5f5apR4qUK/Qfo5k=\t"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"testName": "POST empty body",
|
|
77
|
+
"request": {
|
|
78
|
+
"method": "POST",
|
|
79
|
+
"path": "/testapi/v1/t6",
|
|
80
|
+
"data": "",
|
|
81
|
+
"headers": [
|
|
82
|
+
{
|
|
83
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=1gEDxeQGD5GovIkJJGcBaKnZ+VaPtrc4qBUHixjsPCQ=",
|
|
88
|
+
"expectedDataToSign": "POST\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t6\t\t\t"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"testName": "Simple header signing with GET",
|
|
92
|
+
"request": {
|
|
93
|
+
"method": "GET",
|
|
94
|
+
"path": "/testapi/v1/t4",
|
|
95
|
+
"headers": [
|
|
96
|
+
{
|
|
97
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"X-Test1": "test-simple-header"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=8F9AybcRw+PLxnvT+H0JRkjROrrUgsxJTnRXMzqvcwY=",
|
|
105
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t4\tx-test1:test-simple-header\t\t"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"testName": "Header containing spaces",
|
|
109
|
+
"request": {
|
|
110
|
+
"method": "GET",
|
|
111
|
+
"path": "/testapi/v1/t4",
|
|
112
|
+
"headers": [
|
|
113
|
+
{
|
|
114
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"X-Test1": "\" test-header-with-spaces \""
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=ucq2AbjCNtobHfCTuS38fdkl5UDdWHZhQX46fYR8CqI=",
|
|
122
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t4\tx-test1:\" test-header-with-spaces \"\t\t"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"testName": "Header with leading and interior spaces",
|
|
126
|
+
"request": {
|
|
127
|
+
"method": "GET",
|
|
128
|
+
"path": "/testapi/v1/t4",
|
|
129
|
+
"headers": [
|
|
130
|
+
{
|
|
131
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"X-Test1": " first-thing second-thing"
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"failsWithMessage": "Invalid leading whitespace, reserved character(s), or return character(s) in header value: ' first-thing second-thing'",
|
|
139
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=WtnneL539UadAAOJwnsXvPqT4Kt6z7HMgBEwAFpt3+c="
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"testName": "Headers out of order",
|
|
143
|
+
"request": {
|
|
144
|
+
"method": "GET",
|
|
145
|
+
"path": "/testapi/v1/t4",
|
|
146
|
+
"headers": [
|
|
147
|
+
{
|
|
148
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"X-Test2": "t2"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"X-Test1": "t1"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"X-Test3": "t3"
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=Wus73Nx8jOYM+kkBFF2q8D1EATRIMr0WLWwpLBgkBqY=",
|
|
162
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t4\tx-test1:t1\tx-test2:t2\tx-test3:t3\t\t"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"testName": "Extra header",
|
|
166
|
+
"request": {
|
|
167
|
+
"method": "GET",
|
|
168
|
+
"path": "/testapi/v1/t5",
|
|
169
|
+
"headers": [
|
|
170
|
+
{
|
|
171
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"X-Test2": "t2"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"X-Test1": "t1"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"X-Test3": "t3"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"X-Extra": "this won't be included"
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=Knd/jc0A5Ghhizjayr0AUUvl2MZjBpS3FDSzvtq4Ixc=",
|
|
188
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t5\tx-test1:t1\tx-test2:t2\tx-test3:t3\t\t"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"testName": "PUT test",
|
|
192
|
+
"request": {
|
|
193
|
+
"method": "PUT",
|
|
194
|
+
"path": "/testapi/v1/t6",
|
|
195
|
+
"data": "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
|
|
196
|
+
},
|
|
197
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=GNBWEYSEWOLtu+7dD52da2C39aX/Jchpon3K/AmBqBU=",
|
|
198
|
+
"expectedDataToSign": "PUT\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t6\t\t\t"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"testName": "PATCH test",
|
|
202
|
+
"request": {
|
|
203
|
+
"method": "PATCH",
|
|
204
|
+
"path": "/testapi/v1/t6",
|
|
205
|
+
"data": "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
|
|
206
|
+
},
|
|
207
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=JIl05ImY1AOnMtmw+9LKgaFA8mnzsEKabbnHmI8LsQ4=",
|
|
208
|
+
"expectedDataToSign": "PATCH\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/t6\t\t\t"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"testName": "GET with query params",
|
|
212
|
+
"request": {
|
|
213
|
+
"method": "GET",
|
|
214
|
+
"path": "/testapi/v1/configs/111?from=12345&limit=200000",
|
|
215
|
+
"headers": [
|
|
216
|
+
{
|
|
217
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=XM+hsuSs6nuy/5eDRty1IjtVCAdr8xPFRAZ/b8RXDm8=",
|
|
222
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/configs/111?from=12345&limit=200000\t\t\t"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"_comment": "signature must be different here than in 'GET with query params' test",
|
|
226
|
+
"testName": "GET with query params and separator in path",
|
|
227
|
+
"request": {
|
|
228
|
+
"method": "GET",
|
|
229
|
+
"path": "/testapi/v1/configs/111;222;333?from=12345&limit=200000",
|
|
230
|
+
"headers": [
|
|
231
|
+
{
|
|
232
|
+
"Host": "akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net"
|
|
233
|
+
}
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
"expectedAuthorization": "EG1-HMAC-SHA256 client_token=akab-client-token-xxx-xxxxxxxxxxxxxxxx;access_token=akab-access-token-xxx-xxxxxxxxxxxxxxxx;timestamp=20140321T19:34:21+0000;nonce=nonce-xx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;signature=pmQF7Is2+O4r/mMojPR4yeF58BrempNNoBX5/DT0Fxs=",
|
|
237
|
+
"expectedDataToSign": "GET\thttps\takaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net\t/testapi/v1/configs/111;222;333?from=12345&limit=200000\t\t\t"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: edgegrid-python
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: {OPEN} client authentication protocol for python-requests
|
|
5
5
|
Home-page: https://github.com/akamai/AkamaiOPEN-edgegrid-python
|
|
6
6
|
License: Apache 2.0
|
|
7
|
+
Platform: UNKNOWN
|
|
7
8
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
8
9
|
Classifier: Programming Language :: Python :: 3
|
|
9
10
|
Requires-Python: >=3.9
|
|
10
11
|
Description-Content-Type: text/markdown
|
|
11
|
-
License-File: LICENSE
|
|
12
|
-
Requires-Dist: requests>=2.24.0
|
|
13
|
-
Requires-Dist: requests_toolbelt>=0.9.1
|
|
14
|
-
Requires-Dist: pyOpenSSL>=19.1.0
|
|
15
|
-
Requires-Dist: ndg-httpsclient>=0.5.1
|
|
16
|
-
Requires-Dist: pyasn1>=0.4.8
|
|
17
|
-
Requires-Dist: urllib3>=1.25.10
|
|
18
12
|
Provides-Extra: dev
|
|
19
|
-
|
|
20
|
-
Requires-Dist: pytest>=6.1.0; extra == "dev"
|
|
21
|
-
Requires-Dist: pytest-cov>=2.12.1; extra == "dev"
|
|
13
|
+
License-File: LICENSE
|
|
22
14
|
|
|
23
15
|
# EdgeGrid for Python
|
|
24
16
|
|
|
@@ -47,9 +39,9 @@ pip install edgegrid-python
|
|
|
47
39
|
We provide authentication credentials through an API client. Requests to the API are signed with a timestamp and are executed immediately.
|
|
48
40
|
|
|
49
41
|
1. [Create authentication credentials](https://techdocs.akamai.com/developer/docs/set-up-authentication-credentials).
|
|
50
|
-
|
|
51
|
-
2. Place your credentials in an EdgeGrid resource file, `.edgerc`, under a heading of `[default]` at your local home directory
|
|
52
|
-
|
|
42
|
+
|
|
43
|
+
2. Place your credentials in an EdgeGrid resource file, `.edgerc`, under a heading of `[default]` at your local home directory.
|
|
44
|
+
|
|
53
45
|
```
|
|
54
46
|
[default]
|
|
55
47
|
client_secret = C113nt53KR3TN6N90yVuAgICxIRwsObLi0E67/N8eRN=
|
|
@@ -297,8 +289,10 @@ To report an issue or make a suggestion, create a new [GitHub issue](https://git
|
|
|
297
289
|
|
|
298
290
|
## License
|
|
299
291
|
|
|
300
|
-
Copyright
|
|
292
|
+
Copyright 2025 Akamai Technologies, Inc. All rights reserved.
|
|
301
293
|
|
|
302
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
294
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
303
295
|
|
|
304
296
|
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
297
|
+
|
|
298
|
+
|
|
@@ -12,6 +12,7 @@ akamai/edgegrid/test/conftest.py
|
|
|
12
12
|
akamai/edgegrid/test/edgerc_that_doesnt_parse
|
|
13
13
|
akamai/edgegrid/test/sample_edgerc
|
|
14
14
|
akamai/edgegrid/test/test_edgegrid.py
|
|
15
|
+
akamai/edgegrid/test/testcases.json
|
|
15
16
|
akamai/edgegrid/test/testdata.json
|
|
16
17
|
edgegrid_python.egg-info/PKG-INFO
|
|
17
18
|
edgegrid_python.egg-info/SOURCES.txt
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.13
|
|
3
|
+
# by the following command:
|
|
4
|
+
#
|
|
5
|
+
# pip-compile
|
|
6
|
+
#
|
|
7
|
+
certifi==2025.6.15
|
|
8
|
+
# via requests
|
|
9
|
+
charset-normalizer==3.4.2
|
|
10
|
+
# via requests
|
|
11
|
+
idna==3.10
|
|
12
|
+
# via requests
|
|
13
|
+
requests==2.32.4
|
|
14
|
+
# via
|
|
15
|
+
# edgegrid-python (setup.py)
|
|
16
|
+
# requests-toolbelt
|
|
17
|
+
requests-toolbelt==1.0.0
|
|
18
|
+
# via edgegrid-python (setup.py)
|
|
19
|
+
urllib3==2.5.0
|
|
20
|
+
# via requests
|
|
@@ -2,21 +2,17 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name='edgegrid-python',
|
|
5
|
-
version='2.0.
|
|
5
|
+
version='2.0.2',
|
|
6
6
|
description='{OPEN} client authentication protocol for python-requests',
|
|
7
|
-
long_description=open("README.md").read(),
|
|
8
|
-
long_description_content_type="text/markdown",
|
|
9
7
|
url='https://github.com/akamai/AkamaiOPEN-edgegrid-python',
|
|
10
8
|
namespace_packages=['akamai'],
|
|
11
9
|
packages=find_packages(),
|
|
12
10
|
python_requires=">=3.9",
|
|
11
|
+
long_description=open("README.md").read(),
|
|
12
|
+
long_description_content_type="text/markdown",
|
|
13
13
|
install_requires=[
|
|
14
14
|
'requests>=2.24.0',
|
|
15
15
|
'requests_toolbelt>=0.9.1',
|
|
16
|
-
'pyOpenSSL>=19.1.0',
|
|
17
|
-
'ndg-httpsclient>=0.5.1',
|
|
18
|
-
'pyasn1>=0.4.8',
|
|
19
|
-
'urllib3>=1.25.10'
|
|
20
16
|
],
|
|
21
17
|
extras_require={
|
|
22
18
|
'dev': [
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.13
|
|
3
|
-
# by the following command:
|
|
4
|
-
#
|
|
5
|
-
# pip-compile
|
|
6
|
-
#
|
|
7
|
-
certifi==2024.8.30
|
|
8
|
-
# via requests
|
|
9
|
-
cffi==1.17.1
|
|
10
|
-
# via cryptography
|
|
11
|
-
charset-normalizer==3.4.0
|
|
12
|
-
# via requests
|
|
13
|
-
cryptography==43.0.3
|
|
14
|
-
# via pyopenssl
|
|
15
|
-
idna==3.10
|
|
16
|
-
# via requests
|
|
17
|
-
ndg-httpsclient==0.5.1
|
|
18
|
-
# via edgegrid-python (setup.py)
|
|
19
|
-
pyasn1==0.6.1
|
|
20
|
-
# via
|
|
21
|
-
# edgegrid-python (setup.py)
|
|
22
|
-
# ndg-httpsclient
|
|
23
|
-
pycparser==2.22
|
|
24
|
-
# via cffi
|
|
25
|
-
pyopenssl==24.2.1
|
|
26
|
-
# via
|
|
27
|
-
# edgegrid-python (setup.py)
|
|
28
|
-
# ndg-httpsclient
|
|
29
|
-
requests==2.32.3
|
|
30
|
-
# via
|
|
31
|
-
# edgegrid-python (setup.py)
|
|
32
|
-
# requests-toolbelt
|
|
33
|
-
requests-toolbelt==1.0.0
|
|
34
|
-
# via edgegrid-python (setup.py)
|
|
35
|
-
urllib3==2.2.3
|
|
36
|
-
# via
|
|
37
|
-
# edgegrid-python (setup.py)
|
|
38
|
-
# requests
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/akamai/edgegrid/test/edgerc_that_doesnt_parse
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{edgegrid_python-2.0.0 → edgegrid-python-2.0.2}/edgegrid_python.egg-info/namespace_packages.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|