ale commited on
Commit
13a0a5b
1 Parent(s): 807affd

[fix] handle cases with b64encoded body, add test payload

Browse files
events/payloads_body_base64.json ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": "2.0",
3
+ "routeKey": "POST /prediction",
4
+ "rawPath": "/localhost/prediction",
5
+ "rawQueryString": "",
6
+ "headers": {
7
+ "accept": "application/json, text/plain, */*",
8
+ "accept-encoding": "gzip, deflate, br",
9
+ "accept-language": "en-GB,en-US;q=0.9,en;q=0.8",
10
+ "authorization": "Bearer ey...",
11
+ "content-length": "126",
12
+ "content-type": "application/json",
13
+ "host": "xxx.execute-api.eu-west-1.amazonaws.com",
14
+ "origin": "http://localhost:3000",
15
+ "referer": "http://localhost:3000/",
16
+ "sec-fetch-dest": "empty",
17
+ "sec-fetch-mode": "cors",
18
+ "sec-fetch-site": "cross-site",
19
+ "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
20
+ "x-amzn-trace-id": "Root=1-xxx-aaaa",
21
+ "x-forwarded-for": "1.1.1.1",
22
+ "x-forwarded-port": "443",
23
+ "x-forwarded-proto": "https"
24
+ },
25
+ "requestContext": {
26
+ "accountId": "123",
27
+ "apiId": "api-id-aws",
28
+ "authorizer": {
29
+ "jwt": {
30
+ "claims": {
31
+ "scope": "openid profile email"
32
+ },
33
+ "scopes": null
34
+ }
35
+ },
36
+ "domainName": "xxx.execute-api.eu-west-1.amazonaws.com",
37
+ "domainPrefix": "xxx",
38
+ "http": {
39
+ "method": "POST",
40
+ "path": "/localhost/prediction",
41
+ "protocol": "HTTP/1.1",
42
+ "sourceIp": "52.143.157.36",
43
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
44
+ },
45
+ "requestId": "aaa-bbbb=",
46
+ "routeKey": "POST /prediction",
47
+ "stage": "localhost",
48
+ "time": "21/May/2023:19:32:35 +0000",
49
+ "timeEpoch": 1684697555723
50
+ },
51
+ "body": "eyJiYm94IjogWzEsIDIsIDMsIDRdLCAicG9pbnRzIjogW1s1LCA2XV19"
52
+ }
src/utilities/utilities.py CHANGED
@@ -1,16 +1,19 @@
1
  """Various utilities (logger, time benchmark, args dump, numerical and stats info)"""
2
- import loguru
3
 
4
- from src.utilities.constants import ROOT
5
 
6
-
7
- def is_base64(s):
8
  import base64
9
 
10
  try:
11
- return base64.b64encode(base64.b64decode(s, validate=True)) == s
12
- except Exception as e:
13
- print("e:", e, "#")
 
 
 
 
 
 
14
  return False
15
 
16
 
 
1
  """Various utilities (logger, time benchmark, args dump, numerical and stats info)"""
 
2
 
 
3
 
4
+ def is_base64(sb):
 
5
  import base64
6
 
7
  try:
8
+ if isinstance(sb, str):
9
+ # If there's any unicode here, an exception will be thrown and the function will return false
10
+ sb_bytes = bytes(sb, 'ascii')
11
+ elif isinstance(sb, bytes):
12
+ sb_bytes = sb
13
+ else:
14
+ raise ValueError("Argument must be string or bytes")
15
+ return base64.b64encode(base64.b64decode(sb_bytes, validate=True)) == sb_bytes
16
+ except ValueError:
17
  return False
18
 
19