From d9cfde789cc90536193b6e18d5939d2e1d81935d Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sat, 5 Sep 2020 22:27:05 +0200 Subject: [PATCH] add HeaderSession.Write() --- header-session.go | 11 +++++++++++ header-session_test.go | 19 ++++++++++++++++--- header-transport_test.go | 16 ++++++++-------- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/header-session.go b/header-session.go index a89827a9..3e457813 100644 --- a/header-session.go +++ b/header-session.go @@ -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} +} diff --git a/header-session_test.go b/header-session_test.go index 7b27108d..e19988f8 100644 --- a/header-session_test.go +++ b/header-session_test.go @@ -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) + }) + } +} diff --git a/header-transport_test.go b/header-transport_test.go index 42407234..e6b18e78 100644 --- a/header-transport_test.go +++ b/header-transport_test.go @@ -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 }(), }, },