@@ -17,6 +17,9 @@ func sendCommand() *cobra.Command {
1717 sendMIME string
1818 sendInterval string
1919 sendStream string
20+ headers []string
21+ openDelim string
22+ closeDelim string
2023 )
2124
2225 cmd := & cobra.Command {
@@ -33,6 +36,11 @@ func sendCommand() *cobra.Command {
3336 defer nc .Close ()
3437
3538 var js nats.JetStreamContext
39+ headerMap , err := toolutil .ParseHeadersWithDelimiters (headers , openDelim , closeDelim )
40+ if err != nil {
41+ return fmt .Errorf ("invalid headers: %w" , err )
42+ }
43+
3644 if sendStream != "" {
3745 if js , err = nc .JetStream (); err != nil {
3846 return fmt .Errorf ("JetStream context error: %w" , err )
@@ -48,20 +56,28 @@ func sendCommand() *cobra.Command {
4856 }
4957
5058 publish := func () error {
51- body , _ , err := toolutil .BuildPayload (sendPayload , sendMIME )
59+ body , _ , err := toolutil .BuildPayloadWithDelimiters (sendPayload , sendMIME , openDelim , closeDelim )
5260 if err != nil {
5361 toolutil .PrintError ("Payload build error: %v" , err )
5462 return err
5563 }
64+
65+ // Build NATS message with headers
66+ msg := nats .NewMsg (sendSubject )
67+ msg .Data = body
68+ for k , v := range headerMap {
69+ msg .Header .Add (k , v )
70+ }
71+
5672 if sendStream != "" {
57- ack , err := js .Publish ( sendSubject , body )
73+ ack , err := js .PublishMsg ( msg )
5874 if err != nil {
5975 toolutil .PrintError ("JetStream publish error: %v" , err )
6076 return err
6177 }
6278 toolutil .PrintInfo ("Published to JetStream, sequence: %d" , ack .Sequence )
6379 } else {
64- if err := nc .Publish ( sendSubject , body ); err != nil {
80+ if err := nc .PublishMsg ( msg ); err != nil {
6581 toolutil .PrintError ("Publish error: %v" , err )
6682 return err
6783 }
@@ -79,6 +95,8 @@ func sendCommand() *cobra.Command {
7995 toolutil .AddPayloadFlags (cmd , & sendPayload , "{nowtime}" , & sendMIME , toolutil .CTText )
8096 toolutil .AddIntervalFlag (cmd , & sendInterval , "5s" )
8197 cmd .Flags ().StringVar (& sendStream , "stream" , "" , "JetStream stream name (if set, uses JetStream)" )
98+ toolutil .AddHeadersFlag (cmd , & headers )
99+ toolutil .AddTemplateDelimiterFlags (cmd , & openDelim , & closeDelim )
82100
83101 return cmd
84102}
0 commit comments