mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-18 07:31:42 -05:00
Merge pull request #746 from alphagov/record-user-agent
Statsd counter for user agents.
This commit is contained in:
@@ -118,12 +118,17 @@ def init_app(app):
|
||||
url_for('status.show_delivery_status'),
|
||||
url_for('spec.get_spec')
|
||||
]
|
||||
|
||||
if request.path not in no_auth_req:
|
||||
from app.authentication import auth
|
||||
error = auth.requires_auth()
|
||||
if error:
|
||||
return error
|
||||
|
||||
@app.before_request
|
||||
def record_user_agent():
|
||||
statsd_client.incr("user-agent.{}".format(process_user_agent(request.headers.get('User-Agent', None))))
|
||||
|
||||
@app.before_request
|
||||
def record_request_details():
|
||||
g.start = monotonic()
|
||||
@@ -151,3 +156,15 @@ def init_app(app):
|
||||
|
||||
def create_uuid():
|
||||
return str(uuid.uuid4())
|
||||
|
||||
|
||||
def process_user_agent(user_agent_string):
|
||||
if user_agent_string and user_agent_string.lower().startswith("notify"):
|
||||
components = user_agent_string.split("/")
|
||||
client_name = components[0].lower()
|
||||
client_version = components[1].replace(".", "-")
|
||||
return "{}.{}".format(client_name, client_version)
|
||||
elif user_agent_string and not user_agent_string.lower().startswith("notify"):
|
||||
return "non-notify-user-agent"
|
||||
else:
|
||||
return "unknown"
|
||||
|
||||
13
tests/app/test_user_agent_processing.py
Normal file
13
tests/app/test_user_agent_processing.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from app import process_user_agent
|
||||
|
||||
|
||||
def test_can_process_notify_api_user_agent():
|
||||
assert "notify-api-python-client.3-0-0" == process_user_agent("NOTIFY-API-PYTHON-CLIENT/3.0.0")
|
||||
|
||||
|
||||
def test_can_handle_non_notify_api_user_agent():
|
||||
assert "non-notify-user-agent" == process_user_agent("Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405") # noqa
|
||||
|
||||
|
||||
def test_handles_null_user_agent():
|
||||
assert "unknown" == process_user_agent(None)
|
||||
Reference in New Issue
Block a user