def main()

in fast/project-templates/secops-anonymization-pipeline/source/main.py [0:0]


def main(request):
  """
    Entry point for Cloud Function triggered by HTTP request.
    :param request: payload of HTTP request triggering cloud function
    :return:
    """
  debug = os.environ.get('DEBUG')
  logging.basicConfig(level=logging.INFO)
  LOGGER.info('processing http payload')
  try:
    payload = json.loads(request.data)
  except (binascii.Error, json.JSONDecodeError) as e:
    raise SystemExit(f'Invalid payload: {e.args[0]}.')
  if "EXPORT_DATE" in payload:
    export_date = payload.get('EXPORT_DATE')
  else:
    export_date = date.today().strftime("%Y-%m-%d")
  action = payload.get('ACTION')
  export_start_datetime = payload.get('EXPORT_START_DATETIME', None)
  export_end_datetime = payload.get('EXPORT_END_DATETIME', None)
  log_types = payload.get('LOG_TYPES', None)

  match action:
    case "TRIGGER-EXPORT":
      trigger_export(export_date=export_date,
                     export_start_datetime=export_start_datetime,
                     export_end_datetime=export_end_datetime,
                     log_types=log_types)
    case "ANONYMIZE-DATA":
      anonymize_data(export_date=export_date)
    case "IMPORT-DATA":
      import_logs(export_date=export_date)
    case _:
      return "Action must be either 'TRIGGER-EXPORT', 'ANONYMIZE-DATA' or 'IMPORT-DATA'"

  return "Success."