feat: pass headers to client
This commit is contained in:
@ -15,6 +15,39 @@ import (
|
|||||||
"github.com/chzyer/readline"
|
"github.com/chzyer/readline"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Header struct {
|
||||||
|
Key string
|
||||||
|
Value string
|
||||||
|
}
|
||||||
|
|
||||||
|
type HeaderList struct {
|
||||||
|
Headers []Header
|
||||||
|
}
|
||||||
|
|
||||||
|
func (hl *HeaderList) Map() map[string]string {
|
||||||
|
headerMap := make(map[string]string)
|
||||||
|
for _, header := range hl.Headers {
|
||||||
|
headerMap[header.Key] = header.Value
|
||||||
|
}
|
||||||
|
return headerMap
|
||||||
|
}
|
||||||
|
|
||||||
|
func (hl *HeaderList) Set(arg string) error {
|
||||||
|
var key, value string
|
||||||
|
if _, err := fmt.Sscanf(arg, "%s %s", &key, &value); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
hl.Headers = append(hl.Headers, Header{
|
||||||
|
Key: key,
|
||||||
|
Value: value,
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (hl *HeaderList) String() string {
|
||||||
|
return fmt.Sprintf("%d headers", len(hl.Headers))
|
||||||
|
}
|
||||||
|
|
||||||
func PrintPacket(pkt *hsp.Packet) error {
|
func PrintPacket(pkt *hsp.Packet) error {
|
||||||
fmt.Printf("REQUEST %s\n", pkt.Headers[hsp.H_ROUTE])
|
fmt.Printf("REQUEST %s\n", pkt.Headers[hsp.H_ROUTE])
|
||||||
fmt.Println("Headers:")
|
fmt.Println("Headers:")
|
||||||
@ -121,11 +154,11 @@ func StartServer(addr *hsp.Adddress) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartSession(addr *hsp.Adddress, df *hsp.DataFormat) {
|
func StartSession(addr *hsp.Adddress, df *hsp.DataFormat, headerList *HeaderList) {
|
||||||
url := addr.String() + addr.Route
|
url := addr.String() + addr.Route
|
||||||
fmt.Println("Starting session on", url)
|
fmt.Println("Starting session on", url)
|
||||||
|
|
||||||
c := client.NewClient()
|
c := client.NewClient(headerList.Map())
|
||||||
|
|
||||||
rl, err := readline.New("> ")
|
rl, err := readline.New("> ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -185,10 +218,14 @@ func main() {
|
|||||||
|
|
||||||
var dataFormat string
|
var dataFormat string
|
||||||
|
|
||||||
|
var headerList HeaderList
|
||||||
|
|
||||||
flag.StringVar(&host, "host", "localhost", "specify server host")
|
flag.StringVar(&host, "host", "localhost", "specify server host")
|
||||||
flag.StringVar(&service, "port", "998", "specify server port")
|
flag.StringVar(&service, "port", "998", "specify server port")
|
||||||
flag.StringVar(&address, "addr", "localhost:998", "specify target address")
|
flag.StringVar(&address, "addr", "localhost:998", "specify target address")
|
||||||
|
|
||||||
|
flag.Var(&headerList, "H", "provide additional header")
|
||||||
|
|
||||||
flag.StringVar(&dataFormat, "format", "text", "specify request's data format")
|
flag.StringVar(&dataFormat, "format", "text", "specify request's data format")
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
@ -224,7 +261,7 @@ func main() {
|
|||||||
fmt.Println("ERR: Invalid format selected for requests:", dataFormat)
|
fmt.Println("ERR: Invalid format selected for requests:", dataFormat)
|
||||||
}
|
}
|
||||||
|
|
||||||
StartSession(addr, df)
|
StartSession(addr, df, &headerList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user