2525 X_REQUEST_ID_HEADER ,
2626 AccessControls ,
2727 PointerTypes ,
28- V2Headers ,
2928)
3029from nrlf .core .dynamodb .repository import DocumentPointerRepository
3130from nrlf .core .errors import OperationOutcomeError , ParseError
3231from nrlf .core .logger import LogReference , logger
33- from nrlf .core .model import PermissionsPolicy
32+ from nrlf .core .model import ConnectionMetadata , PermissionsPolicy
3433from nrlf .core .request import parse_body , parse_headers , parse_params , parse_path
3534from nrlf .core .response import Response
3635
@@ -73,7 +72,7 @@ def wrapper(*args, **kwargs) -> Dict[str, Any]:
7372
7473
7574def header_handler (
76- wrapped_func : Callable [..., Dict [str , Any ]]
75+ wrapped_func : Callable [..., Dict [str , Any ]],
7776) -> Callable [..., Dict [str , Any ]]:
7877 """
7978 Wraps the function to set the specific headers in the request and response
@@ -117,7 +116,7 @@ def wrapper(*args, **kwargs) -> Dict[str, Any]:
117116
118117
119118def logger_initialiser (
120- wrapper_func : Callable [..., Dict [str , Any ]]
119+ wrapper_func : Callable [..., Dict [str , Any ]],
121120) -> Callable [..., Dict [str , Any ]]:
122121 """
123122 Wraps the function and initialises the request logger
@@ -144,29 +143,25 @@ def wrapper(*args, **kwargs) -> Dict[str, Any]:
144143RepositoryType = Union [Type [DocumentPointerRepository ], None ]
145144
146145
147- def _use_v2_permissions_model (headers : Dict [str , str ], path : str ) -> bool :
148- case_insensitive_headers = {key .lower (): value for key , value in headers .items ()}
149-
150- v2_headers_provided = (
151- V2Headers .NHSD_END_USER_ORGANISATION_ODS in case_insensitive_headers .keys ()
152- and V2Headers .NHSD_NRL_APP_ID in case_insensitive_headers .keys ()
153- )
154- if not v2_headers_provided :
155- return False
156-
157- metadata = parse_headers (headers , use_v2_permissions = True )
158- v2_permissions_configured = get_pointer_permissions_v2 (metadata , path ) != {}
146+ def v1_perms_stuff (metadata : ConnectionMetadata , config : Config ):
147+ if PERMISSION_ALLOW_ALL_POINTER_TYPES in metadata .nrl_permissions :
148+ logger .log (LogReference .HANDLER004a )
149+ metadata .pointer_types = PointerTypes .list ()
150+ return metadata
159151
160- return v2_permissions_configured
152+ logger .log (LogReference .HANDLER004b )
153+ pointer_types = parse_permissions_file (metadata )
154+ if not pointer_types and not metadata .is_test_event :
155+ logger .log (LogReference .HANDLER004 )
156+ pointer_types = get_pointer_types (metadata , config )
161157
158+ metadata .pointer_types = pointer_types
159+ logger .log (LogReference .HANDLER004c , pointer_types = pointer_types )
162160
163- def _load_v2_connection_metadata (headers : Dict [str , str ], path : str ):
164- logger .log (LogReference .HANDLER004d )
161+ return metadata
165162
166- metadata = parse_headers (headers , use_v2_permissions = True )
167- logger .log (LogReference .HANDLER003 , metadata = metadata .model_dump ())
168163
169- logger . log ( LogReference . HANDLER004b )
164+ def v2_perms_stuff ( metadata : ConnectionMetadata , path = "" ):
170165 pointer_permissions = get_pointer_permissions_v2 (metadata , path )
171166
172167 metadata .nrl_permissions_policy = PermissionsPolicy .model_validate (
@@ -195,27 +190,16 @@ def _load_v2_connection_metadata(headers: Dict[str, str], path: str):
195190def load_connection_metadata (headers : Dict [str , str ], config : Config , path = "" ):
196191 logger .log (LogReference .HANDLER002 , headers = headers )
197192
198- if _use_v2_permissions_model (headers , path ):
199- return _load_v2_connection_metadata (headers , path )
200-
201- metadata = parse_headers (headers , use_v2_permissions = False )
193+ metadata = parse_headers (headers )
202194 logger .log (LogReference .HANDLER003 , metadata = metadata .model_dump ())
203195
204- if PERMISSION_ALLOW_ALL_POINTER_TYPES in metadata .nrl_permissions :
205- logger .log (LogReference .HANDLER004a )
206- metadata .pointer_types = PointerTypes .list ()
207- return metadata
208-
209- logger .log (LogReference .HANDLER004b )
210- pointer_types = parse_permissions_file (metadata )
211- if not pointer_types and not metadata .is_test_event :
212- logger .log (LogReference .HANDLER004 )
213- pointer_types = get_pointer_types (metadata , config )
214-
215- metadata .pointer_types = pointer_types
216- logger .log (LogReference .HANDLER004c , pointer_types = pointer_types )
196+ try :
197+ return v2_perms_stuff (metadata , path )
198+ except FileNotFoundError :
199+ # No v2 perms file found, so try v1 instead
200+ pass
217201
218- return metadata
202+ return v1_perms_stuff ( metadata , config )
219203
220204
221205def filter_kwargs (handler_func : RequestHandler , kwargs : Dict [str , Any ]):
0 commit comments