@@ -703,23 +703,27 @@ func ConvertToString(c *ExecutionState, elem reflect.Value) (string, error) {
703703 }
704704 return str .String (), nil
705705 case reflect .Struct :
706- dsf , ok := elem .Interface ().(DataStreamFactory )
707- if ! ok {
708- return "" , CreateErr (c , nil , "cannot convert '%s' to string" , elem .Kind ())
709- }
710706
711- bytes , err := io .ReadAll (dsf .Reader )
712- if err != nil {
713- dsf .CloseStreamAndIgnoreError ()
714- return "" , CreateErr (c , nil , "error reading from io.Reader: %s" , err )
715- }
707+ switch t := elem .Interface ().(type ) {
708+ case DataStreamFactory :
709+ bytes , err := io .ReadAll (t .Reader )
710+ if err != nil {
711+ t .CloseStreamAndIgnoreError ()
712+ return "" , CreateErr (c , nil , "error reading from io.Reader: %s" , err )
713+ }
716714
717- err = dsf .CloseStream ()
718- if err != nil {
719- return "" , CreateErr (c , nil , "error closing reader: %s" , err )
720- }
715+ err = t .CloseStream ()
716+ if err != nil {
717+ return "" , CreateErr (c , nil , "error closing reader: %s" , err )
718+ }
721719
722- return string (bytes ), nil
720+ return string (bytes ), nil
721+ case SecretValue :
722+ return t .Secret , nil
723+ default :
724+ // fallthrough to error handler
725+ break
726+ }
723727 }
724728
725729 if elem .IsValid () {
0 commit comments