feat: parse data format func
This commit is contained in:
@ -1,5 +1,11 @@
|
|||||||
package hsp
|
package hsp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
H_STATUS = "status"
|
H_STATUS = "status"
|
||||||
H_DATA_FORMAT = "data-format"
|
H_DATA_FORMAT = "data-format"
|
||||||
@ -37,3 +43,30 @@ type DataFormat struct {
|
|||||||
Encoding string
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user