package sip import ( "bytes" "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.Write(escapeParam([]byte(k))) v := params[k] if v != "" { b.WriteByte('=') b.Write(escapeParam([]byte(v))) } } } } 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 }