feat: create response from packet
This commit is contained in:
@ -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,
|
||||
|
Reference in New Issue
Block a user