Presentation Adapter¶
presentation_adapter
¶
Orchestrator that wires transport adapters to a use case with error handling.
PresentationAdapter handles both returned Err and raised
Exception / Error, so callers may choose their error-signalling
style without changing the adapter. Result unwrapping is opt-in via
unwrap_use_case_result — disable it when the use case's natural output
type is itself a Result.
An optional Pipeline wraps the use case in cross-cutting middleware
(logging, timing, etc.) that executes before and after the handler.
PresentationAdapter
¶
Orchestrates the full request/response lifecycle for a use case.
Example
Source code in src/forging_blocks/presentation/adapters/presentation_adapter.py
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | |
__init__(use_case: UseCasePort[UseCaseInput, UseCaseOutput], request_adapter: RequestAdapter[RawRequest, UseCaseInput], response_adapter: ResponseAdapter[UseCaseOutput, RawResponse], error_presenter: ErrorPresenter | None = None, pipeline: Pipeline[UseCaseInput, UseCaseOutput] | None = None, unwrap_use_case_result: bool = True) -> None
¶
Wire the adapter with its collaborators.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
use_case
|
UseCasePort[UseCaseInput, UseCaseOutput]
|
The application use case to invoke. |
required |
request_adapter
|
RequestAdapter[RawRequest, UseCaseInput]
|
Translates transport requests into |
required |
response_adapter
|
ResponseAdapter[UseCaseOutput, RawResponse]
|
Translates use-case output into |
required |
error_presenter
|
ErrorPresenter | None
|
Optional error formatter. When omitted, |
None
|
pipeline
|
Pipeline[UseCaseInput, UseCaseOutput] | None
|
Optional pre-built middleware pipeline that |
None
|
unwrap_use_case_result
|
bool
|
When |
True
|
Source code in src/forging_blocks/presentation/adapters/presentation_adapter.py
handle(raw_request: RawRequest) -> RawResponse
async
¶
Process raw_request through the full lifecycle.
Handles both Result.Err (when unwrap_use_case_result is
True) and raised exceptions so callers may choose their
preferred error style.
Request-adapter failures are treated as transport-level input
errors (status 400). Application errors are mapped through
ErrorStatusCodeMapper.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
raw_request
|
RawRequest
|
The transport-level request. |
required |
Returns:
| Type | Description |
|---|---|
RawResponse
|
A transport-level response (success or error, depending |
RawResponse
|
on the outcome). |
Raises:
| Type | Description |
|---|---|
Exception
|
When error_presenter is |