feat: create response from packet

This commit is contained in:
2025-04-18 13:44:12 +02:00
parent 157f8d2130
commit dd891b65f6

View File

@ -3,6 +3,7 @@ package hsp
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"log"
"maps"
@ -16,6 +17,35 @@ type Response struct {
Payload []byte
}
func NewPacketResponse(packet *Packet) *Response {
status, sok := packet.Headers[H_STATUS]
if !sok {
panic(errors.New("Packet must contain status header for response"))
}
format, fok := packet.Headers[H_DATA_FORMAT]
if !fok {
panic(errors.New("Packet must contain data format header for response"))
}
s, err := strconv.Atoi(status)
if err != nil {
panic(errors.New(fmt.Sprintf("Packet's status code is invalid: %s", err.Error())))
}
df, err := ParseDataFormat(format)
if err != nil {
panic(errors.New(fmt.Sprintf("Failed to parse packet's data format: %s", err.Error())))
}
return &Response{
StatusCode: s,
Format: *df,
Headers: packet.Headers,
Payload: packet.Payload,
}
}
func NewStatusResponse(status int) *Response {
return &Response{
StatusCode: status,