/
server-client.go
69 lines (67 loc) · 2.08 KB
/
server-client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"fmt"
"github.com/hellgate75/go-tcp-common/net/common"
common2 "github.com/hellgate75/go-tcp-common/net/rest/common"
"github.com/hellgate75/go-tcp-common/net/rest/tls/client"
"github.com/hellgate75/go-tcp-common/log"
"github.com/hellgate75/go-tcp-common/net/rest/tls/server"
"net/http"
"os"
"time"
)
func main() {
var port int32 = 40990
var serverLogger log.Logger = log.NewLogger("test rest server", log.DEBUG)
var clientLogger log.Logger = log.NewLogger("test rest client", log.DEBUG)
caCert := "certs\\ca.crt"
serverCert := "certs\\server.pem"
serverKey := "certs\\server.key"
server := server.New(serverLogger)
client := client.NewWithCaCertificate(caCert, "127.0.0.1", fmt.Sprintf("%v", port), clientLogger)
mime := common.PLAIN_TEXT_MIME_TYPE
methods := make([]common.RestMethod, 0)
methods = append(methods, common.REST_METHOD_GET)
if ok := server.AddPath("/hello",
func(w http.ResponseWriter, req *http.Request, path string, accepts common.MimeType, produces common.MimeType) () {
common.SubmitSuccess(w, "Hello!!")
}, &mime, &mime, methods); !ok {
serverLogger.Error("Unable to add server pattern!!")
os.Exit(1)
}
time.Sleep(3 * time.Second)
var errS error = nil
var errC error = nil
defer func() {
time.Sleep(5 * time.Second)
client.Close()
server.Stop()
}()
go func() {
serverCerts := []common2.CertificateKeyPair{
common2.CertificateKeyPair{
Cert: serverCert,
Key: serverKey,
},
}
errS = server.StartTLS("", port, serverCerts, caCert, true)
if errS != nil {
serverLogger.Errorf("Unable to start server: %s", errS)
os.Exit(2)
}
}()
time.Sleep(5 * time.Second)
go func() {
errC = client.Open()
if errC != nil {
serverLogger.Errorf("Unable to start client: %s", errC)
os.Exit(3)
}
}()
time.Sleep(10 * time.Second)
//(int, []byte, error)
responseCode, answer, errCall := client.Request(common.REST_PROTOCOL_HTTPS,"/hello", common.REST_METHOD_GET, &mime, nil, nil)
clientLogger.Infof("Response Code: %v", responseCode)
clientLogger.Infof("Error: %v", errCall)
clientLogger.Infof("Message: %s", answer)
}