func Startup()

in cmd/json2pubsub/function.go [121:192]


func Startup() (port string) {
	port = os.Getenv("PORT")
	if port == "" {
		// Probably not running as function, configure a more console friendly logger
		log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
		port = "8080"
	}

	log.Info().Msgf("Starting Json2Pubsub server, version %s...", VERSION)

	userAgent = fmt.Sprintf("google-pso-tool/json2pubsub/%s", VERSION)
	cloudProjectId = os.Getenv("GOOGLE_CLOUD_PROJECT")
	if cloudProjectId == "" {
		log.Fatal().Msg("Environment variable GOOGLE_CLOUD_PROJECT is not set.")
	}
	log.Info().Msgf("Using cloud project: %s", cloudProjectId)

	var err error
	pubsubTopic, err = getEnvironmentVariable("PUBSUB_TOPIC", true)
	if err != nil {
		log.Fatal().Msgf("Failed to get PUBSUB_TOPIC: %v", err)
	}
	log.Info().Msgf("Using Pub/Sub topic: %s", pubsubTopic)

	handlerUrl, err := getEnvironmentVariable("CUSTOM_HANDLER", false)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to get CUSTOM_HANDLER: %v", err)
	}

	if handlerUrl == "" {
		handlerUrl = "/"
	} else {
		log.Info().Msgf("Using custom handler location: %s", handlerUrl)
	}
	http.HandleFunc("/", RequestHandler)

	celEnv, err := GetCelEnv()
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to setup CEL environment: %v", err)
	}

	controlCel, err := getEnvironmentVariable("CONTROL_CEL", true)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to get CONTROL_CEL: %v", err)
	}
	err = setControlCel(celEnv, controlCel)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to compile request control CEL program (%s): %v", controlCel, err)
	}

	messageCel, err := getEnvironmentVariable("MESSAGE_CEL", true)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to get MESSAGE_CEL: %v", err)
	}
	err = setMessageCel(celEnv, messageCel)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to compile message extract CEL program (%s): %v", messageCel, err)
	}

	responseCel, err := getEnvironmentVariable("RESPONSE_CEL", false)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to get RESPONSE_CEL: %v", err)
	}
	err = setResponseBodyCel(celEnv, responseCel)
	if err != nil {
		log.Fatal().Err(err).Msgf("Failed to compile message extract CEL program (%s): %v", messageCel, err)
	}
	if responseCel == "" {
		log.Info().Msg("No response body CEL specified, using empty responses.")
	}
	return port
}