feat: error response
This commit is contained in:
6
main.go
6
main.go
@ -15,15 +15,13 @@ func FileUploadRoute(req *server.Request) *server.Response {
|
||||
log.Println("[MAIN] File Upload request:", req)
|
||||
bytes, err := req.ExtractBytes()
|
||||
if err != nil {
|
||||
log.Fatalln("Failed to extract bytes from payload:", err)
|
||||
return server.NewStatusResponse(server.STATUS_INTERNALERR)
|
||||
return server.NewErrorResponse(err)
|
||||
}
|
||||
|
||||
filename := "received.bin"
|
||||
err = os.WriteFile(filename, bytes, 0644)
|
||||
if err != nil {
|
||||
log.Fatalln("Failed to write packet payload into a file:", err)
|
||||
return server.NewStatusResponse(server.STATUS_INTERNALERR)
|
||||
return server.NewErrorResponse(err)
|
||||
}
|
||||
|
||||
log.Println("Received new request from client:", req.Conn().RemoteAddr().String())
|
||||
|
@ -57,6 +57,18 @@ func NewJsonResponse(data map[string]string) (*Response, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewErrorResponse(err error) *Response {
|
||||
return &Response{
|
||||
StatusCode: STATUS_INTERNALERR,
|
||||
Format: DataFormat{
|
||||
Format: DF_TEXT,
|
||||
Encoding: E_UTF8,
|
||||
},
|
||||
Headers: map[string]string{},
|
||||
Payload: []byte(err.Error()),
|
||||
}
|
||||
}
|
||||
|
||||
func (res *Response) ToPacket() *Packet {
|
||||
headers := make(map[string]string)
|
||||
|
||||
|
@ -35,6 +35,7 @@ func (r *Router) Handle(conn net.Conn) error {
|
||||
// TODO: Ability to keep connection alive
|
||||
packet, err := dupl.ReadPacket()
|
||||
if err != nil {
|
||||
dupl.WritePacket(NewErrorResponse(err).ToPacket())
|
||||
return err
|
||||
}
|
||||
|
||||
@ -49,4 +50,3 @@ func (r *Router) Handle(conn net.Conn) error {
|
||||
}
|
||||
return errors.New("Not Found")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user