From 3ecb0925d65475b5e4527fdbeb57bfa0203a3a34 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Mon, 10 May 2021 09:26:36 +0200 Subject: [PATCH] use low error correction if qr-code content is too long (#18) --- internal/wireguard/peermanager.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/wireguard/peermanager.go b/internal/wireguard/peermanager.go index 5a3bdf4..a398e2c 100644 --- a/internal/wireguard/peermanager.go +++ b/internal/wireguard/peermanager.go @@ -192,12 +192,21 @@ func (p Peer) GetConfigFile(device Device) ([]byte, error) { func (p Peer) GetQRCode() ([]byte, error) { png, err := qrcode.Encode(p.Config, qrcode.Medium, 250) - if err != nil { - logrus.WithFields(logrus.Fields{ - "err": err, - }).Error("failed to create qrcode") + if err == nil { + return png, nil + } + + if err.Error() != "content too long to encode" { + logrus.Errorf("failed to create qrcode: %v", err) return nil, errors.Wrap(err, "failed to encode qrcode") } + + png, err = qrcode.Encode(p.Config, qrcode.Low, 250) + if err != nil { + logrus.Errorf("failed to create qrcode: %v", err) + return nil, errors.Wrap(err, "failed to encode qrcode") + } + return png, nil }