test: create file streamer
This commit is contained in:
27
cmd/main.go
27
cmd/main.go
@ -44,26 +44,23 @@ func PingPongRoute(req *hsp.Request) *hsp.Response {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func FileUploadRoute(req *hsp.Request) *hsp.Response {
|
func FileUploadStreamer(req *hsp.Request, c chan []byte) {
|
||||||
log.Println("[MAIN] File Upload request:", req)
|
log.Println("[MAIN] File Upload request:", req.GetRawPacket())
|
||||||
bytes, err := req.ExtractBytes()
|
|
||||||
if err != nil {
|
|
||||||
return hsp.NewStatusResponse(hsp.STATUS_INTERNALERR)
|
|
||||||
}
|
|
||||||
|
|
||||||
filename := "received.bin"
|
filename := "received.bin"
|
||||||
err = os.WriteFile(filename, bytes, 0644)
|
|
||||||
|
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("Failed to write packet payload into a file:", err)
|
log.Fatalf("Failed to open file: %v", err)
|
||||||
return hsp.NewStatusResponse(hsp.STATUS_INTERNALERR)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println("Received new request from client:", req.Conn().RemoteAddr().String())
|
defer file.Close()
|
||||||
|
|
||||||
res := hsp.NewTextResponse("Hello, World!")
|
for buf := range c {
|
||||||
res.AddHeader("filename", filename)
|
if _, err := file.Write(buf); err != nil {
|
||||||
|
log.Printf("Write error: %v", err)
|
||||||
return res
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func JsonMockRoute(req *hsp.Request) *hsp.Response {
|
func JsonMockRoute(req *hsp.Request) *hsp.Response {
|
||||||
@ -97,7 +94,7 @@ func main() {
|
|||||||
|
|
||||||
router := server.NewRouter()
|
router := server.NewRouter()
|
||||||
|
|
||||||
router.AddRoute("/file-upload", FileUploadRoute)
|
router.AddStreamer("/file-upload", FileUploadStreamer)
|
||||||
router.AddRoute("/ping-pong", PingPongRoute)
|
router.AddRoute("/ping-pong", PingPongRoute)
|
||||||
router.AddRoute("/mock-json", JsonMockRoute)
|
router.AddRoute("/mock-json", JsonMockRoute)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user