Skip to content

Commit cb30b17

Browse files
Add InterviewId param to EfspConnection and ProxyConnection classes
Automatically get it from the docassemble context, if that's present.
1 parent e4a794b commit cb30b17

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

docassemble/EFSPIntegration/efm_client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
DADateTime,
1919
as_datetime,
2020
reconsider,
21+
current_context,
2122
)
2223
from docassemble.AssemblyLine.al_document import ALDocumentBundle
2324
from docassemble.AssemblyLine.al_general import ALIndividual
@@ -183,10 +184,15 @@ def __init__(
183184

184185
self.credentials_code_block = credentials_code_block
185186

187+
interview_id = current_context().package + current_context().filename
188+
interview_id = (
189+
interview_id.replace(".", "-").replace(":", "-").replace("/", "-")[:72]
190+
)
186191
super().__init__(
187192
url=url,
188193
api_key=api_key,
189194
default_jurisdiction=default_jurisdiction,
195+
interview_id=interview_id,
190196
logger=DALogger(logging.getLogger("docassemble")),
191197
)
192198

docassemble/EFSPIntegration/py_efsp_client.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,13 @@ class EfspConnection:
113113
"""A python client that communicates with the E-file proxy server."""
114114

115115
def __init__(
116-
self, *, url: str, api_key: str, default_jurisdiction: str = None, logger=None
116+
self,
117+
*,
118+
url: str,
119+
api_key: str,
120+
default_jurisdiction: str = None,
121+
interview_id: str = None,
122+
logger=None,
117123
):
118124
"""
119125
Args:
@@ -133,6 +139,7 @@ def __init__(
133139
self.active_token = None
134140
# Keep one uuid for the whole of this class's life, i.e. the session
135141
self.session_id = str(uuid4())
142+
self.interview_id = interview_id
136143
if logger is None:
137144
logger = logging.getLogger()
138145
self.logger = LoggerWithContext(logger, {"session_id": self.session_id})
@@ -170,6 +177,7 @@ def _send(self, to_send: Request, *, req_id: Optional[UUID] = None) -> ApiRespon
170177
req_id = uuid4()
171178
to_send.headers["efsp-request-id"] = str(req_id)
172179
to_send.headers["efsp-session-id"] = self.get_session_id()
180+
to_send.headers["efsp-interview-id"] = self.get_interview_id()
173181
self.get_logger().info(
174182
f"Calling {to_send.method} on {to_send.url}", extra={"req-id": str(req_id)}
175183
)
@@ -181,6 +189,13 @@ def get_session_id(self):
181189
self.session_id = str(uuid4())
182190
return self.session_id
183191

192+
def get_interview_id(self):
193+
if hasattr(self, "interview_id"):
194+
# Migration from older interviews, to start passing observability headers
195+
return self.interview_id
196+
else:
197+
return None
198+
184199
def get_logger(self):
185200
if not hasattr(self, "logger"):
186201
self.logger = LoggerWithContext(

0 commit comments

Comments
 (0)