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
}