58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
|
// Copyright (c) 2022 Nadeen Udantha <me@nadeen.lk>. All rights reserved.
|
||
|
|
||
|
package boihttp_test
|
||
|
|
||
|
import (
|
||
|
"bufio"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"io/ioutil"
|
||
|
"net"
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"git.nadeen.lk/boihttp"
|
||
|
)
|
||
|
|
||
|
func TestMessage(t *testing.T) {
|
||
|
c, err := net.Dial("tcp", httpbin_addr)
|
||
|
throw(err)
|
||
|
defer c.Close()
|
||
|
r, w := bufio.NewReaderSize(c, 1024), bufio.NewWriterSize(c, 1024)
|
||
|
err = (&boihttp.Message{
|
||
|
Method: "GET",
|
||
|
Path: "/anything",
|
||
|
Version: boihttp.VersionHTTP1_1,
|
||
|
Headers: boihttp.Headers{
|
||
|
"Host": []string{"httpbin.org"},
|
||
|
"Connection": []string{"close"},
|
||
|
"Boi": []string{"whatsupdoc?"},
|
||
|
},
|
||
|
}).WriteRequest(w)
|
||
|
throw(err)
|
||
|
throw(w.Flush())
|
||
|
var res boihttp.Message
|
||
|
throw(res.ReadResponse(r))
|
||
|
print(&res, r)
|
||
|
}
|
||
|
|
||
|
func print(res *boihttp.Message, r io.Reader) {
|
||
|
fmt.Printf("status: %d %s\n", res.StatusCode, res.Status)
|
||
|
fmt.Println("headers:")
|
||
|
for k, vs := range res.Headers {
|
||
|
for _, v := range vs {
|
||
|
fmt.Printf("\t\"%s\": \"%s\"\n", k, v)
|
||
|
}
|
||
|
}
|
||
|
d, err := ioutil.ReadAll(r)
|
||
|
throw(err)
|
||
|
fmt.Printf("body: \"%s\"\n", string(d))
|
||
|
time.Sleep(time.Second)
|
||
|
}
|
||
|
|
||
|
func throw(err error) {
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|