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 }