add HeaderSession.Write()

This commit is contained in:
aler9
2020-09-05 22:27:05 +02:00
parent 8525e1e0ff
commit d9cfde789c
3 changed files with 35 additions and 11 deletions

View File

@@ -56,3 +56,14 @@ func ReadHeaderSession(v HeaderValue) (*HeaderSession, error) {
return hs, nil
}
// Write encodes a Session header
func (hs *HeaderSession) Write() HeaderValue {
val := hs.Session
if hs.Timeout != nil {
val += ";timeout=" + strconv.FormatUint(uint64(*hs.Timeout), 10)
}
return HeaderValue{val}
}

View File

@@ -8,12 +8,14 @@ import (
var casesHeaderSession = []struct {
name string
v HeaderValue
vin HeaderValue
vout HeaderValue
h *HeaderSession
}{
{
"base",
HeaderValue{`A3eqwsafq3rFASqew`},
HeaderValue{`A3eqwsafq3rFASqew`},
&HeaderSession{
Session: "A3eqwsafq3rFASqew",
},
@@ -21,6 +23,7 @@ var casesHeaderSession = []struct {
{
"with timeout",
HeaderValue{`A3eqwsafq3rFASqew;timeout=47`},
HeaderValue{`A3eqwsafq3rFASqew;timeout=47`},
&HeaderSession{
Session: "A3eqwsafq3rFASqew",
Timeout: func() *uint {
@@ -32,6 +35,7 @@ var casesHeaderSession = []struct {
{
"with timeout and space",
HeaderValue{`A3eqwsafq3rFASqew; timeout=47`},
HeaderValue{`A3eqwsafq3rFASqew;timeout=47`},
&HeaderSession{
Session: "A3eqwsafq3rFASqew",
Timeout: func() *uint {
@@ -42,12 +46,21 @@ var casesHeaderSession = []struct {
},
}
func TestHeaderSession(t *testing.T) {
func TestHeaderSessionRead(t *testing.T) {
for _, c := range casesHeaderSession {
t.Run(c.name, func(t *testing.T) {
req, err := ReadHeaderSession(c.v)
req, err := ReadHeaderSession(c.vin)
require.NoError(t, err)
require.Equal(t, c.h, req)
})
}
}
func TestHeaderSessionWrite(t *testing.T) {
for _, c := range casesHeaderSession {
t.Run(c.name, func(t *testing.T) {
req := c.h.Write()
require.Equal(t, c.vout, req)
})
}
}

View File

@@ -19,13 +19,13 @@ var casesHeaderTransport = []struct {
&HeaderTransport{
Protocol: StreamProtocolUDP,
Cast: func() *StreamCast {
ret := StreamUnicast
return &ret
v := StreamUnicast
return &v
}(),
ClientPorts: &[2]int{3456, 3457},
Mode: func() *string {
ret := "play"
return &ret
v := "play"
return &v
}(),
},
},
@@ -36,8 +36,8 @@ var casesHeaderTransport = []struct {
&HeaderTransport{
Protocol: StreamProtocolUDP,
Cast: func() *StreamCast {
ret := StreamUnicast
return &ret
v := StreamUnicast
return &v
}(),
ClientPorts: &[2]int{3056, 3057},
ServerPorts: &[2]int{5000, 5001},
@@ -50,8 +50,8 @@ var casesHeaderTransport = []struct {
&HeaderTransport{
Protocol: StreamProtocolUDP,
Cast: func() *StreamCast {
ret := StreamMulticast
return &ret
v := StreamMulticast
return &v
}(),
},
},