From f1885875f3602573ce7e0d220e626e3544ddb896 Mon Sep 17 00:00:00 2001 From: LandaMm Date: Fri, 18 Apr 2025 13:43:44 +0200 Subject: [PATCH] feat: parse data format func --- hsp/constants.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/hsp/constants.go b/hsp/constants.go index 2fedba4..4b87548 100644 --- a/hsp/constants.go +++ b/hsp/constants.go @@ -1,5 +1,11 @@ package hsp +import ( + "errors" + "fmt" + "strings" +) + const ( H_STATUS = "status" H_DATA_FORMAT = "data-format" @@ -37,3 +43,30 @@ type DataFormat struct { Encoding string } +func ParseDataFormat(format string) (*DataFormat, error) { + parts := strings.Split(format, ":") + if len(parts) != 2 { + if format == "bytes" { + return &DataFormat{ + Format: DF_BYTES, + }, nil + } + return nil, errors.New("Invalid data format header") + } + + f, ok := DATA_FORMATS[parts[0]] + if !ok { + return nil, errors.New(fmt.Sprintf("Unknown data format: %s", parts[0])) + } + + encoding, ok := ENCODINGS[parts[1]] + if !ok { + return nil, errors.New(fmt.Sprintf("Unknown payload encoding: %s", parts[1])) + } + + return &DataFormat{ + Format: f, + Encoding: encoding, + }, nil +} +