From 38f8699bd6ac3cb0ea949d2615356b28e752b7e2 Mon Sep 17 00:00:00 2001 From: LandaMm Date: Fri, 18 Apr 2025 13:43:34 +0200 Subject: [PATCH] feat: send text method for client --- hsp/client/client.go | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/hsp/client/client.go b/hsp/client/client.go index 61b2bdf..2b9a089 100644 --- a/hsp/client/client.go +++ b/hsp/client/client.go @@ -2,6 +2,7 @@ package client import ( "net" + "strings" "github.com/LandaMm/hsp-go/hsp" ) @@ -16,13 +17,39 @@ func NewClient() *Client { } } -func (c *Client) SendRequest(req *hsp.Request, address string) (*hsp.Response, error) { - // TODO: Parse pathname +func (c *Client) SendText(address, text string) (*hsp.Response, error) { + parts := strings.SplitN(address, "/", 1) + + var route string + if len(parts) == 1 { + route = "/" + } else { + route = "/" + strings.Join(parts[1:], "") + } + + headers := make(map[string]string) + headers[hsp.H_ROUTE] = route + headers[hsp.H_DATA_FORMAT] = hsp.DF_TEXT + + payload := []byte(text) + + pkt := hsp.BuildPacket(headers, payload) + conn, err := net.Dial("tcp", address) if err != nil { return nil, err } c.Duplex = hsp.NewPacketDuplex(conn) + if _, err := c.Duplex.WritePacket(pkt); err != nil { + return nil, err + } + + pkt, err = c.Duplex.ReadPacket() + if err != nil { + return nil, err + } + + return hsp.NewPacketResponse(pkt), nil }