122 lines
2.5 KiB
Go
122 lines
2.5 KiB
Go
package client
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
|
|
"github.com/keegancsmith/rpc"
|
|
|
|
"forge.cadoles.com/arcad/edge/pkg/storage"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type BlobBucket struct {
|
|
name string
|
|
closed bool
|
|
client *rpc.Client
|
|
}
|
|
|
|
// Size implements storage.BlobBucket
|
|
func (b *BlobBucket) Size(ctx context.Context) (int64, error) {
|
|
return 0, nil
|
|
}
|
|
|
|
// Name implements storage.BlobBucket
|
|
func (b *BlobBucket) Name() string {
|
|
return b.name
|
|
}
|
|
|
|
// Close implements storage.BlobBucket
|
|
func (b *BlobBucket) Close() error {
|
|
return nil
|
|
}
|
|
|
|
// Delete implements storage.BlobBucket
|
|
func (b *BlobBucket) Delete(ctx context.Context, id storage.BlobID) error {
|
|
return nil
|
|
}
|
|
|
|
// Get implements storage.BlobBucket
|
|
func (b *BlobBucket) Get(ctx context.Context, id storage.BlobID) (storage.BlobInfo, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
// List implements storage.BlobBucket
|
|
func (b *BlobBucket) List(ctx context.Context) ([]storage.BlobInfo, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
// NewReader implements storage.BlobBucket
|
|
func (b *BlobBucket) NewReader(ctx context.Context, id storage.BlobID) (io.ReadSeekCloser, error) {
|
|
if b.closed {
|
|
return nil, errors.WithStack(storage.ErrBucketClosed)
|
|
}
|
|
|
|
return &blobReaderCloser{
|
|
id: id,
|
|
bucket: b.name,
|
|
client: b.client,
|
|
}, nil
|
|
}
|
|
|
|
// NewWriter implements storage.BlobBucket
|
|
func (b *BlobBucket) NewWriter(ctx context.Context, id storage.BlobID) (io.WriteCloser, error) {
|
|
if b.closed {
|
|
return nil, errors.WithStack(storage.ErrBucketClosed)
|
|
}
|
|
|
|
return &blobWriterCloser{
|
|
id: id,
|
|
bucket: b.name,
|
|
buf: bytes.Buffer{},
|
|
client: b.client,
|
|
}, nil
|
|
}
|
|
|
|
type blobWriterCloser struct {
|
|
id storage.BlobID
|
|
bucket string
|
|
client *rpc.Client
|
|
buf bytes.Buffer
|
|
closed bool
|
|
}
|
|
|
|
// Write implements io.WriteCloser
|
|
func (wbc *blobWriterCloser) Write(p []byte) (int, error) {
|
|
return 0, nil
|
|
}
|
|
|
|
// Close implements io.WriteCloser
|
|
func (wbc *blobWriterCloser) Close() error {
|
|
return nil
|
|
}
|
|
|
|
type blobReaderCloser struct {
|
|
id storage.BlobID
|
|
bucket string
|
|
client *rpc.Client
|
|
}
|
|
|
|
// Read implements io.ReadSeekCloser
|
|
func (brc *blobReaderCloser) Read(p []byte) (int, error) {
|
|
return 0, nil
|
|
}
|
|
|
|
// Seek implements io.ReadSeekCloser
|
|
func (brc *blobReaderCloser) Seek(offset int64, whence int) (int64, error) {
|
|
return 0, nil
|
|
}
|
|
|
|
// Close implements io.ReadSeekCloser
|
|
func (brc *blobReaderCloser) Close() error {
|
|
return nil
|
|
}
|
|
|
|
var (
|
|
_ storage.BlobBucket = &BlobBucket{}
|
|
_ storage.BlobInfo = &BlobInfo{}
|
|
_ io.WriteCloser = &blobWriterCloser{}
|
|
_ io.ReadSeekCloser = &blobReaderCloser{}
|
|
)
|