Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions agentops/client/api/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import requests

from agentops.client.http.http_client import HttpClient
from agentops.helpers.version import get_agentops_version


class TokenFetcher(Protocol):
Expand Down Expand Up @@ -51,6 +52,7 @@ def prepare_headers(self, custom_headers: Optional[Dict[str, str]] = None) -> Di
"Content-Type": "application/json",
"Connection": "keep-alive",
"Keep-Alive": "timeout=10, max=1000",
"User-Agent": f"agentops-python/{get_agentops_version() or 'unknown'}",
}

if custom_headers:
Expand Down
2 changes: 2 additions & 0 deletions agentops/client/api/versions/v4.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from agentops.client.api.base import BaseApiClient
from agentops.exceptions import ApiServerException
from agentops.client.api.types import UploadedObjectResponse
from agentops.helpers.version import get_agentops_version


class V4Client(BaseApiClient):
Expand Down Expand Up @@ -36,6 +37,7 @@ def prepare_headers(self, custom_headers: Optional[Dict[str, str]] = None) -> Di
"""
headers = {
"Authorization": f"Bearer {self.auth_token}",
"User-Agent": f"agentops-python/{get_agentops_version() or 'unknown'}",
}
if custom_headers:
headers.update(custom_headers)
Expand Down
4 changes: 3 additions & 1 deletion agentops/client/http/http_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from agentops.client.http.http_adapter import BaseHTTPAdapter
from agentops.logging import logger
from agentops.helpers.version import get_agentops_version


class HttpClient:
Expand Down Expand Up @@ -36,9 +37,10 @@ def get_session(cls) -> requests.Session:
"Connection": "keep-alive",
"Keep-Alive": "timeout=10, max=1000",
"Content-Type": "application/json",
"User-Agent": f"agentops-python/{get_agentops_version() or 'unknown'}",
}
)

logger.debug(f"Agentops version: agentops-python/{get_agentops_version() or 'unknown'}")
return cls._session

# @classmethod
Expand Down
34 changes: 34 additions & 0 deletions tests/unit/test_user_agent.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import pytest
import requests
from unittest.mock import patch
from agentops.client.http.http_client import HttpClient
from agentops.helpers.version import get_agentops_version


@pytest.fixture(autouse=True)
def reset_http_client_session():
# Reset the cached session before each test
HttpClient._session = None


def test_user_agent_header():
with patch("requests.Session", wraps=requests.Session):
session = HttpClient.get_session()
expected_version = get_agentops_version() or "unknown"
expected_user_agent = f"agentops-python/{expected_version}"
# Check the session's headers directly
assert "User-Agent" in session.headers
assert session.headers["User-Agent"] == expected_user_agent


def test_user_agent_header_content():
with patch("requests.Session", wraps=requests.Session):
session = HttpClient.get_session()
# Check the session's headers directly
assert "User-Agent" in session.headers
assert "Connection" in session.headers
assert "Keep-Alive" in session.headers
assert "Content-Type" in session.headers
assert session.headers["Connection"] == "keep-alive"
assert session.headers["Keep-Alive"] == "timeout=10, max=1000"
assert session.headers["Content-Type"] == "application/json"
Loading