Skip to content

Commit

Permalink
Add support to build person data for Starlette
Browse files Browse the repository at this point in the history
  • Loading branch information
bxsx committed Apr 24, 2021
1 parent f6276bc commit 0c59ade
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
8 changes: 6 additions & 2 deletions rollbar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -929,8 +929,12 @@ def _build_person_data(request):
else:
return None

# TODO: Check if AuthenticationMiddlawre installed for Startlette
if not StarletteRequest and hasattr(request, 'user'):
if StarletteRequest:
from rollbar.contrib.starlette.requests import hasuser
else:
hasuser = lambda request: False

if hasuser(request) and hasattr(request, 'user'):
user_prop = request.user
user = user_prop() if callable(user_prop) else user_prop
if not user:
Expand Down
7 changes: 7 additions & 0 deletions rollbar/contrib/starlette/requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,10 @@ def store_current_request(

_current_request.set(request)
return request


def hasuser(request: Request) -> bool:
try:
return hasattr(request, 'user')
except AssertionError:
return False
11 changes: 11 additions & 0 deletions rollbar/test/starlette_tests/test_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,14 @@ def test_should_accept_scope_and_receive_params(self):
request = store_current_request(scope, receive)

self.assertEqual(request, expected_request)

def test_hasuser(self):
from starlette.requests import Request
from rollbar.contrib.starlette.requests import hasuser

request = Request({'type': 'http'}, {})
self.assertFalse(hasuser(request))

request = Request({'type': 'http', 'user': 'testuser'}, {})
self.assertTrue(hasuser(request))
self.assertEqual(request.user, 'testuser')

0 comments on commit 0c59ade

Please sign in to comment.