github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/kbfs/libfs/file_info_file.go (about)

     1  // Copyright 2018 Keybase Inc. All rights reserved.
     2  // Use of this source code is governed by a BSD
     3  // license that can be found in the LICENSE file.
     4  
     5  package libfs
     6  
     7  import (
     8  	"time"
     9  
    10  	"github.com/keybase/client/go/kbfs/data"
    11  	"github.com/keybase/client/go/kbfs/libkbfs"
    12  	"golang.org/x/net/context"
    13  )
    14  
    15  type fileInfoFile struct {
    16  	libkbfs.NodeMetadata
    17  	data.PrevRevisions
    18  }
    19  
    20  // GetFileInfo returns serialized JSON containing status information
    21  // for a file or directory entry.
    22  func GetFileInfo(
    23  	ctx context.Context, config libkbfs.Config, dir libkbfs.Node, name string) (
    24  	data []byte, t time.Time, err error) {
    25  	node, ei, err := config.KBFSOps().Lookup(ctx, dir, dir.ChildName(name))
    26  	if err != nil {
    27  		return nil, time.Time{}, err
    28  	}
    29  	nmd, err := config.KBFSOps().GetNodeMetadata(ctx, node)
    30  	if err != nil {
    31  		return nil, time.Time{}, err
    32  	}
    33  	data, err = PrettyJSON(fileInfoFile{nmd, ei.PrevRevisions})
    34  	if err != nil {
    35  		return nil, time.Time{}, err
    36  	}
    37  	return data, time.Unix(0, ei.Mtime), nil
    38  }