You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

64 lines
1.1 KiB

package sip
import (
"bytes"
"github.com/jart/gosip/util"
"sort"
)
type Params map[string]string
func (params Params) Copy() Params {
res := make(Params, len(params))
for k, v := range params {
res[k] = v
}
return res
}
func (params Params) Append(b *bytes.Buffer) {
if params != nil && len(params) > 0 {
keys := make([]string, len(params))
i := 0
for k, _ := range params {
keys[i] = k
i++
}
sort.Strings(keys)
for _, k := range keys {
b.WriteByte(';')
b.WriteString(util.URLEscape(k, false))
v := params[k]
if v != "" {
b.WriteByte('=')
b.WriteString(util.URLEscape(v, false))
}
}
}
}
func (params Params) AppendQuoted(b *bytes.Buffer) {
if params != nil && len(params) > 0 {
keys := make([]string, len(params))
i := 0
for k, _ := range params {
keys[i] = k
i++
}
sort.Strings(keys)
for _, k := range keys {
b.WriteByte(';')
b.Write(tokencify([]byte(k)))
v := params[k]
if v != "" {
b.WriteByte('=')
b.Write(quote([]byte(v)))
}
}
}
}
func (params Params) Has(k string) bool {
_, ok := params["lr"]
return ok
}