import "code.pfad.fr/gohmekit/storage"
NewMemDatabase is an in-memory database for testing (not thread-safe!)
type JSONFile struct { Path string pairing.AccessoryDevice // contains filtered or unexported fields }
JSONFile implements pairing.Database and pairing.AccessoryDevice, storing their settings in a JSON file.
NewJSONFile will use (and create if missing) a JSON file to act as a storage. It will use the given options, only if the concerned parameters are not already set. It will generate random pin and private key if let unspecified.
func (j *JSONFile) AddLongTermPublicKey(c pairing.Controller) error
AddLongTermPublicKey is defined by the pairing.Database interface.
func (j *JSONFile) DiscoveryService(serviceName string, port int, category discovery.Category) discovery.Service
DiscoveryService returns a discovery service, ready to be announced.
GetLongTermPublicKey is defined by the pairing.Database interface.
IsPaired is defined by the pairing.Database interface.
IsPairedWatcher will trigger the callback on pairing change. It will overwrite any existing callback.
func (j *JSONFile) ListLongTermPublicKey() ([]pairing.Controller, error)
ListLongTermPublicKey is defined by the pairing.Database interface.
RemoveLongTermPublicKey is defined by the pairing.Database interface.
VersionWatcher will never trigger the callback, since the version is changed on every restart.
type Option func(*jsonData)
Option is to set some default values on first run.
WithEd25519PrivateKey will set the private key if it wasn't previously set.
WithPairingID will set the pairing ID if it wasn't previously set.
WithPin will set the pin if it wasn't previously set.