66 "context"
77 "encoding/json"
88 "io"
9+ "path"
910
1011 "github.com/base-org/blob-archiver/common/flags"
1112 "github.com/ethereum/go-ethereum/common"
@@ -17,6 +18,7 @@ import (
1718type S3Storage struct {
1819 s3 * minio.Client
1920 bucket string
21+ path string
2022 log log.Logger
2123 compress bool
2224}
@@ -41,13 +43,14 @@ func NewS3Storage(cfg flags.S3Config, l log.Logger) (*S3Storage, error) {
4143 return & S3Storage {
4244 s3 : client ,
4345 bucket : cfg .Bucket ,
46+ path : cfg .Path ,
4447 log : l ,
4548 compress : cfg .Compress ,
4649 }, nil
4750}
4851
4952func (s * S3Storage ) Exists (ctx context.Context , hash common.Hash ) (bool , error ) {
50- _ , err := s .s3 .StatObject (ctx , s .bucket , hash .String (), minio.StatObjectOptions {})
53+ _ , err := s .s3 .StatObject (ctx , s .bucket , path . Join ( s . path , hash .String () ), minio.StatObjectOptions {})
5154 if err != nil {
5255 errResponse := minio .ToErrorResponse (err )
5356 if errResponse .Code == "NoSuchKey" {
@@ -61,7 +64,7 @@ func (s *S3Storage) Exists(ctx context.Context, hash common.Hash) (bool, error)
6164}
6265
6366func (s * S3Storage ) Read (ctx context.Context , hash common.Hash ) (BlobData , error ) {
64- res , err := s .s3 .GetObject (ctx , s .bucket , hash .String (), minio.GetObjectOptions {})
67+ res , err := s .s3 .GetObject (ctx , s .bucket , path . Join ( s . path , hash .String () ), minio.GetObjectOptions {})
6568 if err != nil {
6669 s .log .Info ("unexpected error fetching blob" , "hash" , hash .String (), "err" , err )
6770 return BlobData {}, ErrStorage
@@ -122,7 +125,7 @@ func (s *S3Storage) Write(ctx context.Context, data BlobData) error {
122125
123126 reader := bytes .NewReader (b )
124127
125- _ , err = s .s3 .PutObject (ctx , s .bucket , data .Header .BeaconBlockHash .String (), reader , int64 (len (b )), options )
128+ _ , err = s .s3 .PutObject (ctx , s .bucket , path . Join ( s . path , data .Header .BeaconBlockHash .String () ), reader , int64 (len (b )), options )
126129
127130 if err != nil {
128131 s .log .Warn ("error writing blob" , "err" , err )
0 commit comments