mirror of
https://github.com/aler9/gortsplib
synced 2025-10-24 15:43:18 +08:00
add HeaderSession.Write()
This commit is contained in:
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}(),
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user