diff --git a/resource/filter.go b/resource/filter.go index 2cc1f31..f84f7d8 100644 --- a/resource/filter.go +++ b/resource/filter.go @@ -5,8 +5,6 @@ import ( "fmt" "github.com/google/cel-go/cel" - "github.com/google/cel-go/common/types" - "github.com/google/cel-go/common/types/ref" "github.com/passbolt/go-passbolt-cli/util" "github.com/passbolt/go-passbolt/api" "github.com/passbolt/go-passbolt/helper" @@ -38,28 +36,20 @@ func filterResources(resources *[]api.Resource, celCmd string, ctx context.Conte filteredResources := []api.Resource{} for _, resource := range *resources { + // TODO We should decrypt the secret only when required for performance reasonse + _, name, username, uri, pass, desc, err := helper.GetResource(ctx, client, resource.ID) + if err != nil { + return nil, fmt.Errorf("Get Resource %w", err) + } + val, _, err := (*program).ContextEval(ctx, map[string]any{ - "Id": resource.ID, - "FolderParentID": resource.FolderParentID, - "Name": resource.Name, - "Username": resource.Username, - "URI": resource.URI, - "Password": func() ref.Val { - _, _, _, _, pass, _, err := helper.GetResource(ctx, client, resource.ID) - if err != nil { - fmt.Printf("Get Resource %v", err) - return types.String("") - } - return types.String(pass) - }, - "Description": func() ref.Val { - _, _, _, _, _, descr, err := helper.GetResource(ctx, client, resource.ID) - if err != nil { - fmt.Printf("Get Resource %v", err) - return types.String("") - } - return types.String(descr) - }, + "Id": resource.ID, + "FolderParentID": resource.FolderParentID, + "Name": name, + "Username": username, + "URI": uri, + "Password": pass, + "Description": desc, "CreatedTimestamp": resource.Created.Time, "ModifiedTimestamp": resource.Modified.Time, }) diff --git a/resource/list.go b/resource/list.go index ef2f4b7..010930b 100644 --- a/resource/list.go +++ b/resource/list.go @@ -118,6 +118,12 @@ func ResourceList(cmd *cobra.Command, args []string) error { data := pterm.TableData{columns} for _, resource := range resources { + // TODO We should decrypt the secret only when required for performance reasonse + _, name, username, uri, pass, desc, err := helper.GetResource(ctx, client, resource.ID) + if err != nil { + return fmt.Errorf("Get Resource %w", err) + } + entry := make([]string, len(columns)) for i := range columns { switch strings.ToLower(columns[i]) { @@ -126,22 +132,14 @@ func ResourceList(cmd *cobra.Command, args []string) error { case "folderparentid": entry[i] = resource.FolderParentID case "name": - entry[i] = shellescape.StripUnsafe(resource.Name) + entry[i] = shellescape.StripUnsafe(name) case "username": - entry[i] = shellescape.StripUnsafe(resource.Username) + entry[i] = shellescape.StripUnsafe(username) case "uri": - entry[i] = shellescape.StripUnsafe(resource.URI) + entry[i] = shellescape.StripUnsafe(uri) case "password": - _, _, _, _, pass, _, err := helper.GetResource(ctx, client, resource.ID) - if err != nil { - return fmt.Errorf("Get Resource %w", err) - } entry[i] = shellescape.StripUnsafe(pass) case "description": - _, _, _, _, _, desc, err := helper.GetResource(ctx, client, resource.ID) - if err != nil { - return fmt.Errorf("Get Resource %w", err) - } entry[i] = shellescape.StripUnsafe(desc) case "createdtimestamp": entry[i] = resource.Created.Format(time.RFC3339)