Skip to content

Commit f52b3aa

Browse files
feat: support Django asgi middleware (#625)
1 parent 81fb6c2 commit f52b3aa

File tree

4 files changed

+24
-24
lines changed

4 files changed

+24
-24
lines changed

google/cloud/logging_v2/handlers/middleware/request.py

+8-11
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,20 @@ def _get_django_request():
3333
return getattr(_thread_locals, "request", None)
3434

3535

36-
try:
37-
from django.utils.deprecation import MiddlewareMixin
38-
except ImportError: # pragma: NO COVER
39-
MiddlewareMixin = object
40-
41-
42-
class RequestMiddleware(MiddlewareMixin):
36+
def RequestMiddleware(get_response):
4337
"""Saves the request in thread local"""
4438

45-
def __init__(self, get_response):
46-
self.get_response = get_response
47-
48-
def process_request(self, request):
39+
def middleware(request):
4940
"""Called on each request, before Django decides which view to execute.
5041
5142
Args:
5243
request(django.http.request.HttpRequest):
5344
Django http request.
5445
"""
5546
_thread_locals.request = request
47+
if get_response:
48+
return get_response(request)
49+
else:
50+
return None
51+
52+
return middleware

tests/environment

tests/unit/handlers/middleware/test_request.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -46,26 +46,29 @@ def _make_one(self, *args, **kw):
4646

4747
return self._get_target_class()(*args, **kw)
4848

49+
def _mock_get_response(self, req):
50+
return req
51+
4952
def test_process_request(self):
5053
from django.test import RequestFactory
5154
from google.cloud.logging_v2.handlers.middleware import request
5255

5356
middleware = self._make_one()
5457
mock_request = RequestFactory().get("/")
55-
middleware.process_request(mock_request)
58+
middleware(mock_request)
5659

5760
django_request = request._get_django_request()
5861
self.assertEqual(django_request, mock_request)
5962

6063
def test_can_instantiate_middleware_without_kwargs(self):
61-
handler = mock.Mock()
62-
middleware = self._make_one(handler)
63-
self.assertEqual(middleware.get_response, handler)
64+
middleware = self._make_one(self._mock_get_response)
65+
mock_request = "test_req"
66+
self.assertEqual(middleware(mock_request), mock_request)
6467

6568
def test_can_instantiate_middleware_with_kwargs(self):
66-
handler = mock.Mock()
67-
middleware = self._make_one(get_response=handler)
68-
self.assertEqual(middleware.get_response, handler)
69+
middleware = self._make_one(get_response=self._mock_get_response)
70+
mock_request = "test_req"
71+
self.assertEqual(middleware(mock_request), mock_request)
6972

7073

7174
class Test__get_django_request(DjangoBase):

tests/unit/handlers/test__helpers.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def test_no_context_header(self):
153153
django_request = RequestFactory().get("/")
154154

155155
middleware = request.RequestMiddleware(None)
156-
middleware.process_request(django_request)
156+
middleware(django_request)
157157
http_request, trace_id, span_id, sampled = self._call_fut()
158158

159159
self.assertEqual(http_request["requestMethod"], "GET")
@@ -175,7 +175,7 @@ def test_xcloud_header(self):
175175
)
176176

177177
middleware = request.RequestMiddleware(None)
178-
middleware.process_request(django_request)
178+
middleware(django_request)
179179
http_request, trace_id, span_id, sampled = self._call_fut()
180180

181181
self.assertEqual(trace_id, expected_trace_id)
@@ -195,7 +195,7 @@ def test_traceparent_header(self):
195195
django_request = RequestFactory().get("/", **{django_trace_header: header})
196196

197197
middleware = request.RequestMiddleware(None)
198-
middleware.process_request(django_request)
198+
middleware(django_request)
199199
http_request, trace_id, span_id, sampled = self._call_fut()
200200

201201
self.assertEqual(trace_id, expected_trace_id)
@@ -222,7 +222,7 @@ def test_http_request_populated(self):
222222
django_request.read()
223223

224224
middleware = request.RequestMiddleware(None)
225-
middleware.process_request(django_request)
225+
middleware(django_request)
226226
http_request, *_ = self._call_fut()
227227
self.assertEqual(http_request["requestMethod"], "PUT")
228228
self.assertEqual(http_request["requestUrl"], expected_path)
@@ -236,7 +236,7 @@ def test_http_request_sparse(self):
236236
expected_path = "http://testserver/123"
237237
django_request = RequestFactory().put(expected_path)
238238
middleware = request.RequestMiddleware(None)
239-
middleware.process_request(django_request)
239+
middleware(django_request)
240240
http_request, *_ = self._call_fut()
241241
self.assertEqual(http_request["requestMethod"], "PUT")
242242
self.assertEqual(http_request["requestUrl"], expected_path)

0 commit comments

Comments
 (0)