Skip to content

Commit dc26668

Browse files
fix: use dict for http request (#156)
1 parent 4da135f commit dc26668

File tree

2 files changed

+48
-49
lines changed

2 files changed

+48
-49
lines changed

google/cloud/logging_v2/handlers/_helpers.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
flask = None
2424

2525
from google.cloud.logging_v2.handlers.middleware.request import _get_django_request
26-
from google.logging.type.http_request_pb2 import HttpRequest
2726

2827
_DJANGO_TRACE_HEADER = "HTTP_X_CLOUD_TRACE_CONTEXT"
2928
_DJANGO_USERAGENT_HEADER = "HTTP_USER_AGENT"
@@ -55,23 +54,23 @@ def get_request_data_from_flask():
5554
"""Get http_request and trace data from flask request headers.
5655
5756
Returns:
58-
Tuple[Optional[google.logging.type.http_request_pb2.HttpRequest], Optional[str]]:
57+
Tuple[Optional[dict], Optional[str]]:
5958
Data related to the current http request and the trace_id for the
6059
request. Both fields will be None if a flask request isn't found.
6160
"""
6261
if flask is None or not flask.request:
6362
return None, None
6463

6564
# build http_request
66-
http_request = HttpRequest(
67-
request_method=flask.request.method,
68-
request_url=flask.request.url,
69-
request_size=flask.request.content_length,
70-
user_agent=flask.request.user_agent.string,
71-
remote_ip=flask.request.remote_addr,
72-
referer=flask.request.referrer,
73-
protocol=flask.request.environ.get(_PROTOCOL_HEADER),
74-
)
65+
http_request = {
66+
"requestMethod": flask.request.method,
67+
"requestUrl": flask.request.url,
68+
"requestSize": flask.request.content_length,
69+
"userAgent": flask.request.user_agent.string,
70+
"remoteIp": flask.request.remote_addr,
71+
"referer": flask.request.referrer,
72+
"protocol": flask.request.environ.get(_PROTOCOL_HEADER),
73+
}
7574

7675
# find trace id
7776
trace_id = None
@@ -86,7 +85,7 @@ def get_request_data_from_django():
8685
"""Get http_request and trace data from django request headers.
8786
8887
Returns:
89-
Tuple[Optional[google.logging.type.http_request_pb2.HttpRequest], Optional[str]]:
88+
Tuple[Optional[dict], Optional[str]]:
9089
Data related to the current http request and the trace_id for the
9190
request. Both fields will be None if a django request isn't found.
9291
"""
@@ -95,15 +94,15 @@ def get_request_data_from_django():
9594
if request is None:
9695
return None, None
9796
# build http_request
98-
http_request = HttpRequest(
99-
request_method=request.method,
100-
request_url=request.build_absolute_uri(),
101-
request_size=len(request.body),
102-
user_agent=request.META.get(_DJANGO_USERAGENT_HEADER),
103-
remote_ip=request.META.get(_DJANGO_REMOTE_ADDR_HEADER),
104-
referer=request.META.get(_DJANGO_REFERER_HEADER),
105-
protocol=request.META.get(_PROTOCOL_HEADER),
106-
)
97+
http_request = {
98+
"requestMethod": request.method,
99+
"requestUrl": request.build_absolute_uri(),
100+
"requestSize": len(request.body),
101+
"userAgent": request.META.get(_DJANGO_USERAGENT_HEADER),
102+
"remoteIp": request.META.get(_DJANGO_REMOTE_ADDR_HEADER),
103+
"referer": request.META.get(_DJANGO_REFERER_HEADER),
104+
"protocol": request.META.get(_PROTOCOL_HEADER),
105+
}
107106

108107
# find trace id
109108
trace_id = None
@@ -119,7 +118,7 @@ def get_request_data():
119118
frameworks (currently supported: Flask and Django).
120119
121120
Returns:
122-
Tuple[Optional[google.logging.type.http_request_pb2.HttpRequest], Optional[str]]:
121+
Tuple[Optional[dict], Optional[str]]:
123122
Data related to the current http request and the trace_id for the
124123
request. Both fields will be None if a supported web request isn't found.
125124
"""

tests/unit/handlers/test__helpers.py

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
import mock
1818

1919
_FLASK_TRACE_ID = "flask-id"
20-
_FLASK_HTTP_REQUEST = {"request_url": "https://flask.palletsprojects.com/en/1.1.x/"}
20+
_FLASK_HTTP_REQUEST = {"requestUrl": "https://flask.palletsprojects.com/en/1.1.x/"}
2121
_DJANGO_TRACE_ID = "django-id"
22-
_DJANGO_HTTP_REQUEST = {"request_url": "https://www.djangoproject.com/"}
22+
_DJANGO_HTTP_REQUEST = {"requestUrl": "https://www.djangoproject.com/"}
2323

2424

2525
class Test_get_request_data_from_flask(unittest.TestCase):
@@ -47,7 +47,7 @@ def test_no_context_header(self):
4747
http_request, trace_id = self._call_fut()
4848

4949
self.assertIsNone(trace_id)
50-
self.assertEqual(http_request.request_method, "GET")
50+
self.assertEqual(http_request["requestMethod"], "GET")
5151

5252
def test_valid_context_header(self):
5353
flask_trace_header = "X_CLOUD_TRACE_CONTEXT"
@@ -63,7 +63,7 @@ def test_valid_context_header(self):
6363
http_request, trace_id = self._call_fut()
6464

6565
self.assertEqual(trace_id, expected_trace_id)
66-
self.assertEqual(http_request.request_method, "GET")
66+
self.assertEqual(http_request["requestMethod"], "GET")
6767

6868
def test_http_request_populated(self):
6969
expected_path = "http://testserver/123"
@@ -86,23 +86,23 @@ def test_http_request_populated(self):
8686
)
8787
http_request, trace_id = self._call_fut()
8888

89-
self.assertEqual(http_request.request_method, "PUT")
90-
self.assertEqual(http_request.request_url, expected_path)
91-
self.assertEqual(http_request.user_agent, expected_agent)
92-
self.assertEqual(http_request.referer, expected_referrer)
93-
self.assertEqual(http_request.remote_ip, expected_ip)
94-
self.assertEqual(http_request.request_size, len(body_content))
95-
self.assertEqual(http_request.protocol, "HTTP/1.1")
89+
self.assertEqual(http_request["requestMethod"], "PUT")
90+
self.assertEqual(http_request["requestUrl"], expected_path)
91+
self.assertEqual(http_request["userAgent"], expected_agent)
92+
self.assertEqual(http_request["referer"], expected_referrer)
93+
self.assertEqual(http_request["remoteIp"], expected_ip)
94+
self.assertEqual(http_request["requestSize"], len(body_content))
95+
self.assertEqual(http_request["protocol"], "HTTP/1.1")
9696

9797
def test_http_request_sparse(self):
9898
expected_path = "http://testserver/123"
9999
app = self.create_app()
100100
with app.test_client() as c:
101101
c.put(path=expected_path)
102102
http_request, trace_id = self._call_fut()
103-
self.assertEqual(http_request.request_method, "PUT")
104-
self.assertEqual(http_request.request_url, expected_path)
105-
self.assertEqual(http_request.protocol, "HTTP/1.1")
103+
self.assertEqual(http_request["requestMethod"], "PUT")
104+
self.assertEqual(http_request["requestUrl"], expected_path)
105+
self.assertEqual(http_request["protocol"], "HTTP/1.1")
106106

107107

108108
class Test_get_request_data_from_django(unittest.TestCase):
@@ -136,7 +136,7 @@ def test_no_context_header(self):
136136
middleware = request.RequestMiddleware(None)
137137
middleware.process_request(django_request)
138138
http_request, trace_id = self._call_fut()
139-
self.assertEqual(http_request.request_method, "GET")
139+
self.assertEqual(http_request["requestMethod"], "GET")
140140
self.assertIsNone(trace_id)
141141

142142
def test_valid_context_header(self):
@@ -156,7 +156,7 @@ def test_valid_context_header(self):
156156
http_request, trace_id = self._call_fut()
157157

158158
self.assertEqual(trace_id, expected_trace_id)
159-
self.assertEqual(http_request.request_method, "GET")
159+
self.assertEqual(http_request["requestMethod"], "GET")
160160

161161
def test_http_request_populated(self):
162162
from django.test import RequestFactory
@@ -176,13 +176,13 @@ def test_http_request_populated(self):
176176
middleware = request.RequestMiddleware(None)
177177
middleware.process_request(django_request)
178178
http_request, trace_id = self._call_fut()
179-
self.assertEqual(http_request.request_method, "PUT")
180-
self.assertEqual(http_request.request_url, expected_path)
181-
self.assertEqual(http_request.user_agent, expected_agent)
182-
self.assertEqual(http_request.referer, expected_referrer)
183-
self.assertEqual(http_request.remote_ip, "127.0.0.1")
184-
self.assertEqual(http_request.request_size, len(body_content))
185-
self.assertEqual(http_request.protocol, "HTTP/1.1")
179+
self.assertEqual(http_request["requestMethod"], "PUT")
180+
self.assertEqual(http_request["requestUrl"], expected_path)
181+
self.assertEqual(http_request["userAgent"], expected_agent)
182+
self.assertEqual(http_request["referer"], expected_referrer)
183+
self.assertEqual(http_request["remoteIp"], "127.0.0.1")
184+
self.assertEqual(http_request["requestSize"], len(body_content))
185+
self.assertEqual(http_request["protocol"], "HTTP/1.1")
186186

187187
def test_http_request_sparse(self):
188188
from django.test import RequestFactory
@@ -193,10 +193,10 @@ def test_http_request_sparse(self):
193193
middleware = request.RequestMiddleware(None)
194194
middleware.process_request(django_request)
195195
http_request, trace_id = self._call_fut()
196-
self.assertEqual(http_request.request_method, "PUT")
197-
self.assertEqual(http_request.request_url, expected_path)
198-
self.assertEqual(http_request.remote_ip, "127.0.0.1")
199-
self.assertEqual(http_request.protocol, "HTTP/1.1")
196+
self.assertEqual(http_request["requestMethod"], "PUT")
197+
self.assertEqual(http_request["requestUrl"], expected_path)
198+
self.assertEqual(http_request["remoteIp"], "127.0.0.1")
199+
self.assertEqual(http_request["protocol"], "HTTP/1.1")
200200

201201

202202
class Test_get_request_data(unittest.TestCase):

0 commit comments

Comments
 (0)