Skip to content

Commit 57c6026

Browse files
committed
decoupling CodexClient from the rest of the system
1 parent 95d5bf8 commit 57c6026

13 files changed

+119
-84
lines changed

cmd/download/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"os"
88
"path"
99

10-
"go-codex-client/communities" // Import the local communities package
10+
"go-codex-client/codexclient"
1111

1212
"github.com/codex-storage/codex-go-bindings/codex"
1313
)
@@ -25,7 +25,7 @@ func main() {
2525
}
2626

2727
// Create Codex client
28-
client, err := communities.NewCodexClient(codex.Config{
28+
client, err := codexclient.NewCodexClient(codex.Config{
2929
LogFormat: codex.LogFormatNoColors,
3030
MetricsEnabled: false,
3131
BlockRetries: 5,

cmd/upload/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"os"
99
"path"
1010

11-
"go-codex-client/communities" // Import the local communities package
11+
"go-codex-client/codexclient"
1212

1313
"github.com/codex-storage/codex-go-bindings/codex"
1414
)
@@ -34,7 +34,7 @@ func main() {
3434

3535
fmt.Printf("Uploading %s (%d bytes) to Codex...\n", *file, len(data))
3636
// Create Codex client and upload
37-
client, err := communities.NewCodexClient(codex.Config{
37+
client, err := codexclient.NewCodexClient(codex.Config{
3838
LogFormat: codex.LogFormatNoColors,
3939
MetricsEnabled: false,
4040
BlockRetries: 5,

communities/codex_client.go renamed to codexclient/codex_client.go

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
1-
/* Package communities
1+
/* Package codexclientpackage codexclient
2+
23
*
34
* Provides a CodexClient type that you can use to conveniently
45
* upload buffers to Codex.
56
*
67
*/
7-
package communities
8+
9+
package codexclient
810

911
import (
1012
"bytes"
1113
"context"
1214
"fmt"
1315
"io"
1416

17+
"go-codex-client/codexmanifest"
18+
1519
"github.com/codex-storage/codex-go-bindings/codex"
1620
)
1721

@@ -58,7 +62,7 @@ func (c *CodexClient) Download(cid string, output io.Writer) error {
5862
return c.DownloadWithContext(context.Background(), cid, output)
5963
}
6064

61-
func (c *CodexClient) TriggerDownload(cid string) (codex.Manifest, error) {
65+
func (c *CodexClient) TriggerDownload(cid string) (codexmanifest.CodexManifest, error) {
6266
return c.TriggerDownloadWithContext(context.Background(), cid)
6367
}
6468

@@ -89,12 +93,34 @@ func (c *CodexClient) LocalDownloadWithContext(ctx context.Context, cid string,
8993
return c.LocalDownload(cid, output)
9094
}
9195

92-
func (c *CodexClient) FetchManifestWithContext(ctx context.Context, cid string) (codex.Manifest, error) {
93-
return c.node.DownloadManifest(cid)
96+
func (c *CodexClient) FetchManifestWithContext(ctx context.Context, cid string) (codexmanifest.CodexManifest, error) {
97+
manifest, err := c.node.DownloadManifest(cid)
98+
if err != nil {
99+
return codexmanifest.CodexManifest{}, err
100+
}
101+
return codexmanifest.CodexManifest{
102+
Cid: manifest.Cid,
103+
TreeCid: manifest.TreeCid,
104+
DatasetSize: manifest.DatasetSize,
105+
BlockSize: manifest.BlockSize,
106+
Filename: manifest.Filename,
107+
Mimetype: manifest.Mimetype,
108+
}, nil
94109
}
95110

96-
func (c *CodexClient) TriggerDownloadWithContext(ctx context.Context, cid string) (codex.Manifest, error) {
97-
return c.node.Fetch(cid)
111+
func (c *CodexClient) TriggerDownloadWithContext(ctx context.Context, cid string) (codexmanifest.CodexManifest, error) {
112+
manifest, err := c.node.Fetch(cid)
113+
if err != nil {
114+
return codexmanifest.CodexManifest{}, err
115+
}
116+
return codexmanifest.CodexManifest{
117+
Cid: manifest.Cid,
118+
TreeCid: manifest.TreeCid,
119+
DatasetSize: manifest.DatasetSize,
120+
BlockSize: manifest.BlockSize,
121+
Filename: manifest.Filename,
122+
Mimetype: manifest.Mimetype,
123+
}, nil
98124
}
99125

100126
// UploadArchive is a convenience method for uploading archive data

communities/codex_client_integration_test.go renamed to codexclient/codex_client_integration_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//go:build codex_integration
22
// +build codex_integration
33

4-
package communities_test
4+
package codexclient_test
55

66
import (
77
"bytes"
@@ -16,19 +16,21 @@ import (
1616
"github.com/stretchr/testify/require"
1717
"github.com/stretchr/testify/suite"
1818

19+
"go-codex-client/codexclient"
20+
"go-codex-client/codextestutils"
1921
"go-codex-client/communities"
2022
)
2123

2224
// CodexClientIntegrationTestSuite demonstrates testify's suite functionality for CodexClient integration tests
2325
type CodexClientIntegrationTestSuite struct {
2426
suite.Suite
25-
client *communities.CodexClient
27+
client communities.CodexClientInterface
2628
}
2729

2830
// SetupSuite runs once before all tests in the suite
2931
func (suite *CodexClientIntegrationTestSuite) SetupSuite() {
3032
var err error
31-
suite.client, err = communities.NewCodexClient(codex.Config{
33+
suite.client, err = codexclient.NewCodexClient(codex.Config{
3234
DataDir: suite.T().TempDir(),
3335
LogFormat: codex.LogFormatNoColors,
3436
MetricsEnabled: false,
@@ -107,7 +109,7 @@ func (suite *CodexClientIntegrationTestSuite) TestIntegration_CheckNonExistingCI
107109
}
108110

109111
func (suite *CodexClientIntegrationTestSuite) TestIntegration_TriggerDownload() {
110-
client := NewCodexClientTest(suite.T())
112+
client := codextestutils.NewCodexClientTest(suite.T())
111113

112114
// Generate random payload to ensure proper round-trip verification
113115
payload := make([]byte, 1024)

communities/codex_client_test.go renamed to codexclient/codex_client_test.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
package communities_test
1+
//go:build codex_integration
2+
// +build codex_integration
3+
4+
package codexclient_test
25

36
import (
47
"bytes"
@@ -12,10 +15,11 @@ import (
1215
"github.com/stretchr/testify/require"
1316
"github.com/stretchr/testify/suite"
1417

15-
"go-codex-client/communities"
18+
"go-codex-client/codexclient"
19+
"go-codex-client/codextestutils"
1620
)
1721

18-
func upload(client communities.CodexClient, t *testing.T, buf *bytes.Buffer) string {
22+
func upload(client codexclient.CodexClient, t *testing.T, buf *bytes.Buffer) string {
1923
filename := "hello.txt"
2024
cid, err := client.Upload(buf, filename)
2125
if err != nil {
@@ -32,12 +36,12 @@ func upload(client communities.CodexClient, t *testing.T, buf *bytes.Buffer) str
3236
// CodexClientTestSuite demonstrates testify's suite functionality for CodexClient tests
3337
type CodexClientTestSuite struct {
3438
suite.Suite
35-
client *communities.CodexClient
39+
client *codexclient.CodexClient
3640
}
3741

3842
// SetupTest runs before each test method
3943
func (suite *CodexClientTestSuite) SetupTest() {
40-
suite.client = NewCodexClientTest(suite.T())
44+
suite.client = codextestutils.NewCodexClientTest(suite.T())
4145
}
4246

4347
// TearDownTest runs after each test method

codexmanifest/codex_manifest.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package codexmanifest
2+
3+
type CodexManifest struct {
4+
Cid string
5+
TreeCid string
6+
DatasetSize int
7+
BlockSize int
8+
Filename string
9+
Mimetype string
10+
Protected bool
11+
}

communities/testutil_test.go renamed to codextestutils/codex_test_utils.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
package communities_test
1+
//go:build codex_integration
2+
3+
package codextestutils
24

35
import (
4-
"go-codex-client/communities"
6+
"go-codex-client/codexclient"
57
"testing"
68

79
"github.com/codex-storage/codex-go-bindings/codex"
810
)
911

10-
func NewCodexClientTest(t *testing.T) *communities.CodexClient {
11-
client, err := communities.NewCodexClient(codex.Config{
12+
func NewCodexClientTest(t *testing.T) *codexclient.CodexClient {
13+
client, err := codexclient.NewCodexClient(codex.Config{
1214
DataDir: t.TempDir(),
1315
LogFormat: codex.LogFormatNoColors,
1416
MetricsEnabled: false,

communities/codex_archive_downloader_integration_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/stretchr/testify/suite"
1818
"go.uber.org/zap"
1919

20+
"go-codex-client/codexclient"
2021
"go-codex-client/communities"
2122
"go-codex-client/protobuf"
2223
)
@@ -25,14 +26,14 @@ import (
2526
// against a real Codex instance
2627
type CodexArchiveDownloaderIntegrationSuite struct {
2728
suite.Suite
28-
client *communities.CodexClient
29+
client communities.CodexClientInterface
2930
uploadedCIDs []string // Track uploaded CIDs for cleanup
3031
}
3132

3233
// SetupSuite runs once before all tests in the suite
3334
func (suite *CodexArchiveDownloaderIntegrationSuite) SetupSuite() {
3435
var err error
35-
suite.client, err = communities.NewCodexClient(codex.Config{
36+
suite.client, err = codexclient.NewCodexClient(codex.Config{
3637
LogFormat: codex.LogFormatNoColors,
3738
MetricsEnabled: false,
3839
BlockRetries: 5,

0 commit comments

Comments
 (0)