func SessionClientConfigFromEnv()

in go/mqtt/env.go [40:141]


func SessionClientConfigFromEnv() (*Env, error) {
	opts := &Env{SessionClientOptions: &SessionClientOptions{}}
	conn := connectionProviderBuilder{}

	for _, env := range os.Environ() {
		idx := strings.IndexByte(env, '=')
		key := env[:idx]
		val := env[idx+1:]
		switch key {
		case "AIO_BROKER_HOSTNAME":
			conn.hostname = val

		case "AIO_BROKER_TCP_PORT":
			port, err := strconv.ParseUint(val, 10, 16)
			if err != nil {
				return nil, &InvalidArgumentError{
					message: "could not parse broker TCP port",
					wrapped: err,
				}
			}
			conn.port = uint16(port)

		case "AIO_MQTT_USE_TLS":
			useTLS, err := strconv.ParseBool(val)
			if err != nil {
				return nil, &InvalidArgumentError{
					message: "could not parse MQTT use TLS",
					wrapped: err,
				}
			}
			conn.useTLS = &useTLS

		case "AIO_MQTT_CLEAN_START":
			cleanStart, err := strconv.ParseBool(val)
			if err != nil {
				return nil, &InvalidArgumentError{
					message: "could not parse MQTT clean start",
					wrapped: err,
				}
			}
			opts.CleanStart = cleanStart

		case "AIO_MQTT_KEEP_ALIVE":
			keepAlive, err := strconv.ParseUint(val, 10, 16)
			if err != nil {
				return nil, &InvalidArgumentError{
					message: "could not parse MQTT keep-alive",
					wrapped: err,
				}
			}
			opts.KeepAlive = uint16(keepAlive)

		case "AIO_MQTT_CLIENT_ID":
			opts.ClientID = val

		case "AIO_MQTT_SESSION_EXPIRY":
			sessionExpiry, err := strconv.ParseUint(val, 10, 32)
			if err != nil {
				return nil, &InvalidArgumentError{
					message: "could not parse MQTT session expiry",
					wrapped: err,
				}
			}
			opts.SessionExpiry = uint32(sessionExpiry)

		case "AIO_MQTT_USERNAME":
			opts.Username = ConstantUsername(val)

		case "AIO_MQTT_PASSWORD_FILE":
			opts.Password = FilePassword(val)

		case "AIO_SAT_FILE":
			satAuth, err := auth.NewAIOServiceAccountToken(val)
			if err != nil {
				return nil, &InvalidArgumentError{
					message: "error setting up the AIO SAT auth provider",
					wrapped: err,
				}
			}
			opts.Auth = satAuth

		case "AIO_TLS_CA_FILE":
			conn.caFile = val

		case "AIO_TLS_CERT_FILE":
			conn.certFile = val

		case "AIO_TLS_KEY_FILE":
			conn.keyFile = val

		case "AIO_TLS_KEY_PASSWORD_FILE":
			conn.passFile = val
		}
	}

	var err error
	opts.ConnectionProvider, err = conn.build()
	if err != nil {
		return nil, err
	}
	return opts, nil
}