From 2a4f1263771f8f5b6150151ec54d407696aa56cb Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 12 Dec 2024 17:03:10 +0100 Subject: [PATCH] feat(barcodes): Make width and height configureable --- docs/docs.go | 18 ++++++++++++++++++ docs/swagger.json | 18 ++++++++++++++++++ docs/swagger.yaml | 14 ++++++++++++++ handlers/barcode.go | 25 ++++++++++++++++++++++++- 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/docs/docs.go b/docs/docs.go index f904c18..9b53413 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -52,6 +52,24 @@ const docTemplate = `{ "name": "content", "in": "path", "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": {} diff --git a/docs/swagger.json b/docs/swagger.json index 8bfb4c3..800d6ef 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -43,6 +43,24 @@ "name": "content", "in": "path", "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": {} diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 722db76..6fcfa4d 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -181,6 +181,20 @@ paths: name: content required: true 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: - image/png responses: {} diff --git a/handlers/barcode.go b/handlers/barcode.go index 403bb34..5aaa4bc 100644 --- a/handlers/barcode.go +++ b/handlers/barcode.go @@ -1,6 +1,8 @@ package handlers import ( + "strconv" + "github.com/gofiber/fiber/v2" ) @@ -11,6 +13,8 @@ import ( // @Tags barcodes // @Param type path string true "Barcode type" Enums(ean13, code128) // @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 // @Router /v1/barcodes/{type}/{content} [get] func (h *DefaultHandler) GenerateBarcode(c *fiber.Ctx) error { @@ -19,8 +23,27 @@ func (h *DefaultHandler) GenerateBarcode(c *fiber.Ctx) error { barcodeType := c.Params("type") 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 - barcode, err := h.BarcodeService.GenerateBarcode(barcodeType, barcodeContent, 1000, 1000) + barcode, err := h.BarcodeService.GenerateBarcode(barcodeType, barcodeContent, width, height) if err != nil { return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ "error": err.Error(),