func parseLifecycleEvent()

in pkg/monitor/sqsevent/sqs-monitor.go [136:156]


func parseLifecycleEvent(message string) (LifecycleDetail, error) {
	lifecycleEventMessage := LifecycleDetailMessage{}
	lifecycleEvent := LifecycleDetail{}
	err := json.Unmarshal([]byte(message), &lifecycleEventMessage)
	if err != nil {
		return lifecycleEvent, fmt.Errorf("unmarshalling SQS message: %w", err)
	}
	// Converts escaped JSON object to string, to lifecycle event
	if lifecycleEventMessage.Message != nil {
		err = json.Unmarshal([]byte(fmt.Sprintf("%v", lifecycleEventMessage.Message)), &lifecycleEvent)
		if err != nil {
			err = fmt.Errorf("unmarshalling message body from '.Message': %w", err)
		}
	} else {
		err = json.Unmarshal([]byte(fmt.Sprintf("%v", message)), &lifecycleEvent)
		if err != nil {
			err = fmt.Errorf("unmarshalling message body: %w", err)
		}
	}
	return lifecycleEvent, err
}