"""Lambda Function Response.""" import json from hooks.lambda_invoke.function_error import LambdaFunctionErrorState class LambdaFunctionResponse: """Lambda Function Response interface object. Handles the parsing of a function return value. """ def __init__(self, response): """Set default state and parse lambda invocation response.""" self.error = None self.payload = None if response.get('Payload'): self.parse_payload(response) self.error = LambdaFunctionErrorState(response, self.payload) def parse_payload(self, response): """Parse the function return value.""" payload = response.get('Payload').read().decode() if payload: self.payload = json.loads(payload) def dump(self): """Return state as a dict for testing and debugging.""" return { 'error': self.error.dump(), 'payload': self.payload, 'succeeded': self.succeeded } @property def succeeded(self): """Return the success status as a boolean.""" return False if self.error.handler else True