refactor(services): Extract barcode generation
This commit is contained in:
@@ -6,13 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"image/png"
|
||||
"strings"
|
||||
|
||||
"github.com/boombuler/barcode"
|
||||
"github.com/boombuler/barcode/code128"
|
||||
"github.com/boombuler/barcode/ean"
|
||||
"github.com/boombuler/barcode/qr"
|
||||
)
|
||||
|
||||
type Templater interface {
|
||||
@@ -37,48 +31,19 @@ func idToEan13(id string, prefix string) (string, error) {
|
||||
}
|
||||
|
||||
func (t *DefaultTemplater) GenerateBarcode(code string, format string, prefix string) (string, error) {
|
||||
var generatedCode barcode.Barcode
|
||||
gen := &DefaultBarcodeGenerator{}
|
||||
var err error
|
||||
|
||||
switch format {
|
||||
case "ean13":
|
||||
encodedEan, err := idToEan13(code, prefix)
|
||||
if format == "ean13" {
|
||||
code, err = idToEan13(code, prefix)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
generatedCode, err = ean.Encode(encodedEan)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
break
|
||||
case "code128":
|
||||
generatedCode, err = code128.Encode(prefix + code)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
break
|
||||
case "qr":
|
||||
generatedCode, err = qr.Encode(prefix+code, qr.M, qr.AlphaNumeric)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
break
|
||||
default:
|
||||
return "", errors.New("unknown barcode format")
|
||||
}
|
||||
|
||||
scaledCode, err := barcode.Scale(generatedCode, 1000, 500)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
buf, err := gen.GenerateBarcode(format, code, 1000, 500)
|
||||
|
||||
var buf bytes.Buffer
|
||||
err = png.Encode(&buf, scaledCode)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return base64.StdEncoding.EncodeToString(buf.Bytes()), nil
|
||||
return base64.StdEncoding.EncodeToString(buf.Bytes()), err
|
||||
}
|
||||
|
||||
func (t *DefaultTemplater) SelectSponsorImage(id int) (string, error) {
|
||||
|
||||
Reference in New Issue
Block a user