feat(barcodes): Make width and height configureable

This commit is contained in:
Nicolai Ort 2024-12-12 17:03:10 +01:00
parent 5c932158e9
commit 2a4f126377
Signed by: niggl
GPG Key ID: 13AFA55AF62F269F
4 changed files with 74 additions and 1 deletions

View File

@ -52,6 +52,24 @@ const docTemplate = `{
"name": "content", "name": "content",
"in": "path", "in": "path",
"required": true "required": true
},
{
"maximum": 10000,
"minimum": 1,
"type": "integer",
"default": 1000,
"description": "Barcode width",
"name": "width",
"in": "query"
},
{
"maximum": 10000,
"minimum": 1,
"type": "integer",
"default": 1000,
"description": "Barcode height",
"name": "height",
"in": "query"
} }
], ],
"responses": {} "responses": {}

View File

@ -43,6 +43,24 @@
"name": "content", "name": "content",
"in": "path", "in": "path",
"required": true "required": true
},
{
"maximum": 10000,
"minimum": 1,
"type": "integer",
"default": 1000,
"description": "Barcode width",
"name": "width",
"in": "query"
},
{
"maximum": 10000,
"minimum": 1,
"type": "integer",
"default": 1000,
"description": "Barcode height",
"name": "height",
"in": "query"
} }
], ],
"responses": {} "responses": {}

View File

@ -181,6 +181,20 @@ paths:
name: content name: content
required: true required: true
type: string type: string
- default: 1000
description: Barcode width
in: query
maximum: 10000
minimum: 1
name: width
type: integer
- default: 1000
description: Barcode height
in: query
maximum: 10000
minimum: 1
name: height
type: integer
produces: produces:
- image/png - image/png
responses: {} responses: {}

View File

@ -1,6 +1,8 @@
package handlers package handlers
import ( import (
"strconv"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
@ -11,6 +13,8 @@ import (
// @Tags barcodes // @Tags barcodes
// @Param type path string true "Barcode type" Enums(ean13, code128) // @Param type path string true "Barcode type" Enums(ean13, code128)
// @Param content path string true "Barcode content" MinLength(1) // @Param content path string true "Barcode content" MinLength(1)
// @Param width query int false "Barcode width" Minimum(1) Maximum(10000) default(1000)
// @Param height query int false "Barcode height" Minimum(1) Maximum(10000) default(1000)
// @Produce image/png // @Produce image/png
// @Router /v1/barcodes/{type}/{content} [get] // @Router /v1/barcodes/{type}/{content} [get]
func (h *DefaultHandler) GenerateBarcode(c *fiber.Ctx) error { func (h *DefaultHandler) GenerateBarcode(c *fiber.Ctx) error {
@ -19,8 +23,27 @@ func (h *DefaultHandler) GenerateBarcode(c *fiber.Ctx) error {
barcodeType := c.Params("type") barcodeType := c.Params("type")
barcodeContent := c.Params("content") barcodeContent := c.Params("content")
// Get the width and height from the query parameters
widthStr := c.Query("width", "1000")
heightStr := c.Query("height", "1000")
// Convert width and height to integers
width, err := strconv.Atoi(widthStr)
if err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Invalid width parameter",
})
}
height, err := strconv.Atoi(heightStr)
if err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Invalid height parameter",
})
}
// Generate the barcode // Generate the barcode
barcode, err := h.BarcodeService.GenerateBarcode(barcodeType, barcodeContent, 1000, 1000) barcode, err := h.BarcodeService.GenerateBarcode(barcodeType, barcodeContent, width, height)
if err != nil { if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": err.Error(), "error": err.Error(),