go/mqtt/username_password.go (28 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. package mqtt import ( "context" "os" ) type ( // UsernameProvider is a function that returns an MQTT username and flag. // Note that if the returned flag is false, the returned username is // ignored. UsernameProvider func(context.Context) (string, bool, error) // PasswordProvider is a function that returns an MQTT password and flag. // Note that if the returned flag is false, the returned password is // ignored. PasswordProvider func(context.Context) ([]byte, bool, error) ) // ConstantUsername is a UsernameProvider implementation that returns an // unchanging username. This can be used if the username does not need to be // updated between MQTT connections. func ConstantUsername(username string) UsernameProvider { return func(context.Context) (string, bool, error) { return username, true, nil } } // ConstantPassword is a PasswordProvider implementation that returns an // unchanging password. This can be used if the password does not need to be // updated between MQTT connections. func ConstantPassword(password []byte) PasswordProvider { return func(context.Context) ([]byte, bool, error) { return password, true, nil } } // FilePassword is a PasswordProvider implementation that reads a password from // a given filename for each MQTT connection. func FilePassword(filename string) PasswordProvider { return func(context.Context) ([]byte, bool, error) { data, err := os.ReadFile(filename) if err != nil { return nil, false, err } return data, true, nil } }