@@ -6,6 +6,8 @@ package internal
66import (
77 "context"
88 "embed"
9+ "encoding/json"
10+ "fmt"
911 "io/fs"
1012 "math"
1113 "strings"
@@ -189,39 +191,42 @@ func (sc AprlScanner) graphScan(ctx context.Context, graphClient *graph.GraphQue
189191 m := row .(map [string ]interface {})
190192
191193 tags := ""
192- // if m["tags"] != nil {
193- // tags = m["tags"].(string )
194- // }
194+ if m ["tags" ] != nil {
195+ tags = convertInterfaceToString ( m ["tags" ])
196+ }
195197
196198 param1 := ""
197199 if m ["param1" ] != nil {
198- param1 = m ["param1" ].( string )
200+ param1 = convertInterfaceToString ( m ["param1" ])
199201 }
200202
201203 param2 := ""
202204 if m ["param2" ] != nil {
203- param2 = m ["param2" ].( string )
205+ param2 = convertInterfaceToString ( m ["param2" ])
204206 }
205207
206208 param3 := ""
207209 if m ["param3" ] != nil {
208- param3 = m ["param3" ].( string )
210+ param3 = convertInterfaceToString ( m ["param3" ])
209211 }
210212
211213 param4 := ""
212214 if m ["param4" ] != nil {
213- param4 = m ["param4" ].( string )
215+ param4 = convertInterfaceToString ( m ["param4" ])
214216 }
215217
216218 param5 := ""
217219 if m ["param5" ] != nil {
218- param5 = m ["param5" ].( string )
220+ param5 = convertInterfaceToString ( m ["param5" ])
219221 }
220222
221223 log .Debug ().Msg (rule .GraphQuery )
222224
223225 subscription := azqr .GetSubsctiptionFromResourceID (m ["id" ].(string ))
224- subscriptionName := subscriptions [subscription ]
226+ subscriptionName , ok := subscriptions [subscription ]
227+ if ! ok {
228+ subscriptionName = ""
229+ }
225230
226231 results = append (results , azqr.AprlResult {
227232 RecommendationID : rule .RecommendationID ,
@@ -270,3 +275,20 @@ func (sc AprlScanner) getGraphRules(service string, filters *azqr.Filters, aprl
270275 }
271276 return r
272277}
278+
279+ func convertInterfaceToString (i interface {}) string {
280+ switch v := i .(type ) {
281+ case string :
282+ return v
283+ case int :
284+ return fmt .Sprintf ("%d" , v )
285+ case bool :
286+ return fmt .Sprintf ("%t" , v )
287+ default :
288+ jsonStr , err := json .Marshal (i )
289+ if err != nil {
290+ log .Fatal ().Err (err ).Msg ("unssupported type in ARG query result" )
291+ }
292+ return string (jsonStr )
293+ }
294+ }
0 commit comments