logos-storage-go/communities/codex_client_interface.go
2025-10-28 07:44:40 +01:00

39 lines
1.3 KiB
Go

package communities
import (
"context"
"io"
"github.com/codex-storage/codex-go-bindings/codex"
)
// Mock generation instruction above will create a mock in package `mock_communities`
// (folder `mock/`) so tests can import it as e.g. `go-codex-client/communities/mock` or
// with an alias like `mocks` to avoid import-cycle issues.
//
// CodexClientInterface defines the interface for CodexClient operations needed by the downloader
//
//go:generate mockgen -package=mock_communities -source=codex_client_interface.go -destination=mock/codex_client_interface.go
type CodexClientInterface interface {
// Upload methods
Upload(data io.Reader, filename string) (string, error)
UploadArchive(encodedArchive []byte) (string, error)
// Download methods
Download(cid string, output io.Writer) error
DownloadWithContext(ctx context.Context, cid string, output io.Writer) error
LocalDownload(cid string, output io.Writer) error
LocalDownloadWithContext(ctx context.Context, cid string, output io.Writer) error
// Async download methods
TriggerDownload(cid string) (codex.Manifest, error)
TriggerDownloadWithContext(ctx context.Context, cid string) (codex.Manifest, error)
// Manifest methods
FetchManifestWithContext(ctx context.Context, cid string) (codex.Manifest, error)
// CID management methods
HasCid(cid string) (bool, error)
RemoveCid(cid string) error
}