@@ -116,17 +116,6 @@ def parse_queue_url(queue_url: str) -> Tuple[str, Optional[str], str]:
116116 return account_id , region , queue_name
117117
118118
119- def decode_receipt_handle (receipt_handle : str ) -> str :
120- try :
121- _ , queue_arn , * _ = extract_receipt_handle_info (receipt_handle )
122- parse_arn (queue_arn ) # raises a ValueError if it is not an arn
123- return queue_arn
124- except (IndexError , ValueError ):
125- raise ReceiptHandleIsInvalid (
126- f'The input receipt handle "{ receipt_handle } " is not a valid receipt handle.'
127- )
128-
129-
130119class ReceiptHandleInformation (NamedTuple ):
131120 identifier : str
132121 queue_arn : str
@@ -137,11 +126,15 @@ class ReceiptHandleInformation(NamedTuple):
137126def extract_receipt_handle_info (receipt_handle : str ) -> ReceiptHandleInformation :
138127 try :
139128 handle = base64 .b64decode (receipt_handle ).decode ("utf-8" )
140- return ReceiptHandleInformation (* handle .split (" " ))
141- except (IndexError , ValueError ):
129+ parts = handle .split (" " )
130+ if len (parts ) != 4 :
131+ raise ValueError (f'The input receipt handle "{ receipt_handle } " is incomplete.' )
132+ parse_arn (parts [1 ])
133+ return ReceiptHandleInformation (* parts )
134+ except (IndexError , ValueError ) as e :
142135 raise ReceiptHandleIsInvalid (
143136 f'The input receipt handle "{ receipt_handle } " is not a valid receipt handle.'
144- )
137+ ) from e
145138
146139
147140def encode_receipt_handle (queue_arn , message ) -> str :
0 commit comments