@@ -37,7 +37,7 @@ func (enc *Encoding) Encode(dst *diam.Message, src []byte) (err error) {
3737 }
3838 //2. range every key/value
3939 for key , value := range js {
40- if avps , err = encode (key , value ); err != nil {
40+ if avps , err = encode (key , value , dst . Header . ApplicationID ); err != nil {
4141 return err
4242 }
4343 if avps .Code == avp .SessionID && avps .VendorID == 0 {
@@ -54,13 +54,13 @@ func (enc *Encoding) Encode(dst *diam.Message, src []byte) (err error) {
5454//Decode diam.Message into []byte
5555func (enc * Encoding ) Decode (src * diam.Message ) (dst []byte , err error ) {
5656 var b bytes.Buffer
57- jsonGroupData (& b , src .AVP )
57+ jsonGroupData (& b , src .AVP , src . Header . ApplicationID )
5858 return b .Bytes (), nil
5959}
6060
61- func jsonAVP (b * bytes.Buffer , avp * diam.AVP ) {
61+ func jsonAVP (b * bytes.Buffer , avp * diam.AVP , appid uint32 ) {
6262 //1. print avp name
63- if dictAVP , err := dict .Default .FindAVPWithVendor (( uint32 ( 4 )) , avp .Code , avp .VendorID ); err != nil {
63+ if dictAVP , err := dict .Default .FindAVPWithVendor (appid , avp .Code , avp .VendorID ); err != nil {
6464 //1.1 print as "20230:2011" if no avp_name found,
6565 fmt .Fprintf (b , "\" %d:%d\" : " , avp .Code , avp .VendorID )
6666 } else {
@@ -74,15 +74,15 @@ func jsonAVP(b *bytes.Buffer, avp *diam.AVP) {
7474 fmt .Fprint (b , jsonData (avp .Data ))
7575 } else {
7676 //2.2 print group avp
77- jsonGroupData (b , avp .Data .(* diam.GroupedAVP ).AVP )
77+ jsonGroupData (b , avp .Data .(* diam.GroupedAVP ).AVP , appid )
7878 }
7979
8080}
81- func jsonGroupData (b * bytes.Buffer , avps []* diam.AVP ) {
81+ func jsonGroupData (b * bytes.Buffer , avps []* diam.AVP , appid uint32 ) {
8282 fmt .Fprintln (b , "{" )
8383 for index , avp := range avps {
8484 //1. print each line "avp_name:avp_value"
85- jsonAVP (b , avp )
85+ jsonAVP (b , avp , appid )
8686 //2. print "," for each line if not last line
8787 if index != len (avps )- 1 {
8888 fmt .Fprintln (b , "," )
@@ -146,7 +146,7 @@ func isJSON(s []byte) bool {
146146 return json .Unmarshal (s , & js ) == nil
147147}
148148
149- func encode (key string , value interface {}) (avp * diam.AVP , err error ) {
149+ func encode (key string , value interface {}, appid uint32 ) (avp * diam.AVP , err error ) {
150150 var avpcode int
151151 var subAVP * diam.AVP
152152 //var dictAVP *dict.AVP
@@ -177,7 +177,7 @@ func encode(key string, value interface{}) (avp *diam.AVP, err error) {
177177
178178 } else {
179179 //1.3. handle key as "avp_name"
180- if dictAVP , err = dict .Default .FindAVP (uint32 ( 4 ) , key ); err != nil {
180+ if dictAVP , err = dict .Default .FindAVP (appid , key ); err != nil {
181181 return nil , err
182182 }
183183 }
@@ -194,7 +194,7 @@ func encode(key string, value interface{}) (avp *diam.AVP, err error) {
194194 AVP : make ([]* diam.AVP , 0 ),
195195 }
196196 for key , value := range value .(map [string ]interface {}) {
197- if subAVP , err = encode (key , value ); err != nil {
197+ if subAVP , err = encode (key , value , appid ); err != nil {
198198 return nil , err
199199 }
200200 grouped .AddAVP (subAVP )
0 commit comments