43 lines
862 B
Go
43 lines
862 B
Go
|
package blob
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"forge.cadoles.com/arcad/edge/pkg/storage"
|
||
|
"forge.cadoles.com/arcad/edge/pkg/storage/rpc/gob"
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
type GetBlobInfoArgs struct {
|
||
|
BlobID storage.BlobID
|
||
|
BucketID BucketID
|
||
|
}
|
||
|
|
||
|
type GetBlobInfoReply struct {
|
||
|
BlobInfo storage.BlobInfo
|
||
|
}
|
||
|
|
||
|
func (s *Service) GetBlobInfo(ctx context.Context, args *GetBlobInfoArgs, reply *GetBlobInfoReply) error {
|
||
|
bucket, err := s.getOpenedBucket(args.BucketID)
|
||
|
if err != nil {
|
||
|
return errors.WithStack(err)
|
||
|
}
|
||
|
|
||
|
blobInfo, err := bucket.Get(ctx, args.BlobID)
|
||
|
if err != nil {
|
||
|
return errors.WithStack(err)
|
||
|
}
|
||
|
|
||
|
*reply = GetBlobInfoReply{
|
||
|
BlobInfo: &gob.BlobInfo{
|
||
|
Bucket_: blobInfo.Bucket(),
|
||
|
ContentType_: blobInfo.ContentType(),
|
||
|
BlobID_: blobInfo.ID(),
|
||
|
ModTime_: blobInfo.ModTime(),
|
||
|
Size_: blobInfo.Size(),
|
||
|
},
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|