Coverage for src/qdrant_loader/connectors/jira/auth.py: 77%
26 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
1from __future__ import annotations
3from requests import Session
4from requests.auth import HTTPBasicAuth
6from .config import JiraDeploymentType, JiraProjectConfig
9def setup_authentication(session: Session, config: JiraProjectConfig) -> None:
10 """Configure authentication on the provided requests session based on deployment type."""
11 if config.deployment_type == JiraDeploymentType.CLOUD:
12 if not config.token:
13 raise ValueError("API token is required for Jira Cloud")
14 if not config.email:
15 raise ValueError("Email is required for Jira Cloud")
16 session.auth = HTTPBasicAuth(config.email, config.token)
17 else:
18 if not config.token:
19 raise ValueError(
20 "Personal Access Token is required for Jira Data Center/Server"
21 )
22 session.headers.update(
23 {
24 "Authorization": f"Bearer {config.token}",
25 "Content-Type": "application/json",
26 }
27 )
30def auto_detect_deployment_type(base_url: str) -> JiraDeploymentType:
31 """Auto-detect the Jira deployment type based on base URL."""
32 from urllib.parse import urlparse
34 try:
35 parsed_url = urlparse(str(base_url))
36 hostname = parsed_url.hostname
37 if hostname is None:
38 return JiraDeploymentType.DATACENTER
39 if hostname.endswith(".atlassian.net") or hostname == "atlassian.net":
40 return JiraDeploymentType.CLOUD
41 return JiraDeploymentType.DATACENTER
42 except Exception:
43 return JiraDeploymentType.DATACENTER