From c7c2f7df8478da4a9966dcbf542db2e005769910 Mon Sep 17 00:00:00 2001
From: ash <alan@storacha.network>
Date: Tue, 12 Nov 2024 22:33:28 +0700
Subject: [PATCH] fix: update ipni publisher dep (#28)

---
 go.mod                                 |  6 +++---
 go.sum                                 | 17 +++++++----------
 pkg/internal/ipldstore/ipldstore.go    |  2 +-
 pkg/store/delegationstore/store.go     |  7 ++++++-
 pkg/store/receiptstore/receiptstore.go |  8 +++++++-
 5 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/go.mod b/go.mod
index e84d765..38fd107 100644
--- a/go.mod
+++ b/go.mod
@@ -5,6 +5,7 @@ go 1.23.0
 toolchain go1.23.2
 
 require (
+	github.com/aws/aws-sdk-go v1.45.24
 	github.com/aws/aws-sdk-go-v2 v1.32.4
 	github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3
 	github.com/golang-jwt/jwt/v4 v4.5.1
@@ -22,16 +23,15 @@ require (
 	github.com/storacha/go-jobqueue v0.0.0-20241103222443-bb7a7b589719
 	github.com/storacha/go-metadata v0.0.0-20241021141939-f94d93dcda78
 	github.com/storacha/go-ucanto v0.2.1-0.20241110061414-d4eb802c541b
-	github.com/storacha/ipni-publisher v0.0.0-20241112113514-13e9ce371678
+	github.com/storacha/ipni-publisher v0.0.0-20241112152400-07a540928427
 	github.com/stretchr/testify v1.9.0
 	github.com/urfave/cli/v2 v2.27.4
 )
 
 require (
-	github.com/aws/aws-sdk-go v1.45.24 // indirect
 	github.com/filecoin-project/go-address v1.1.0 // indirect
 	github.com/filecoin-project/go-fil-commcid v0.2.0 // indirect
-	github.com/ipfs/go-ds-s3 v0.11.0 // indirect
+	github.com/ipfs/go-peertaskqueue v0.8.1 // indirect
 	github.com/jmespath/go-jmespath v0.4.0 // indirect
 	github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect
 	github.com/multiformats/go-varint v0.0.7 // indirect
diff --git a/go.sum b/go.sum
index f84e8db..720fc38 100644
--- a/go.sum
+++ b/go.sum
@@ -292,8 +292,6 @@ github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ
 github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
 github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo=
 github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q=
-github.com/ipfs/go-ds-s3 v0.11.0 h1:Adsu/Ee0zyh44ZndwUtFGH4WKpXxlmuRhOesr58BkPM=
-github.com/ipfs/go-ds-s3 v0.11.0/go.mod h1:7D06YGOYL0QKd+celKhFMTyKfX4pDCP+uPZipkKxlXw=
 github.com/ipfs/go-ipfs-blockstore v1.3.1 h1:cEI9ci7V0sRNivqaOr0elDsamxXFxJMMMy7PTTDQNsQ=
 github.com/ipfs/go-ipfs-blockstore v1.3.1/go.mod h1:KgtZyc9fq+P2xJUiCAzbRdhhqJHvsw8u2Dlqy2MyRTE=
 github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ=
@@ -307,8 +305,8 @@ github.com/ipfs/go-ipfs-exchange-interface v0.2.1 h1:jMzo2VhLKSHbVe+mHNzYgs95n0+
 github.com/ipfs/go-ipfs-exchange-interface v0.2.1/go.mod h1:MUsYn6rKbG6CTtsDp+lKJPmVt3ZrCViNyH3rfPGsZ2E=
 github.com/ipfs/go-ipfs-exchange-offline v0.3.0 h1:c/Dg8GDPzixGd0MC8Jh6mjOwU57uYokgWRFidfvEkuA=
 github.com/ipfs/go-ipfs-exchange-offline v0.3.0/go.mod h1:MOdJ9DChbb5u37M1IcbrRB02e++Z7521fMxqCNRrz9s=
-github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY=
-github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY=
+github.com/ipfs/go-ipfs-pq v0.0.3 h1:YpoHVJB+jzK15mr/xsWC574tyDLkezVrDNeaalQBsTE=
+github.com/ipfs/go-ipfs-pq v0.0.3/go.mod h1:btNw5hsHBpRcSSgZtiNm/SLj5gYIZ18AKtv3kERkRb4=
 github.com/ipfs/go-ipfs-routing v0.3.0 h1:9W/W3N+g+y4ZDeffSgqhgo7BsBSJwPMcyssET9OWevc=
 github.com/ipfs/go-ipfs-routing v0.3.0/go.mod h1:dKqtTFIql7e1zYsEuWLyuOU+E0WJWW8JjbTPLParDWo=
 github.com/ipfs/go-ipfs-util v0.0.3 h1:2RFdGez6bu2ZlZdI+rWfIdbQb1KudQp3VGwPtdNCmE0=
@@ -328,8 +326,8 @@ github.com/ipfs/go-merkledag v0.11.0 h1:DgzwK5hprESOzS4O1t/wi6JDpyVQdvm9Bs59N/jq
 github.com/ipfs/go-merkledag v0.11.0/go.mod h1:Q4f/1ezvBiJV0YCIXvt51W/9/kqJGH4I1LsA7+djsM4=
 github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg=
 github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY=
-github.com/ipfs/go-peertaskqueue v0.8.0 h1:JyNO144tfu9bx6Hpo119zvbEL9iQ760FHOiJYsUjqaU=
-github.com/ipfs/go-peertaskqueue v0.8.0/go.mod h1:cz8hEnnARq4Du5TGqiWKgMr/BOSQ5XOgMOh1K5YYKKM=
+github.com/ipfs/go-peertaskqueue v0.8.1 h1:YhxAs1+wxb5jk7RvS0LHdyiILpNmRIRnZVztekOF0pg=
+github.com/ipfs/go-peertaskqueue v0.8.1/go.mod h1:Oxxd3eaK279FxeydSPPVGHzbwVeHjatZ2GA8XD+KbPU=
 github.com/ipfs/go-test v0.0.4 h1:DKT66T6GBB6PsDFLoO56QZPrOmzJkqU1FZH5C9ySkew=
 github.com/ipfs/go-test v0.0.4/go.mod h1:qhIM1EluEfElKKM6fnWxGn822/z9knUGM1+I/OAQNKI=
 github.com/ipfs/go-verifcid v0.0.3 h1:gmRKccqhWDocCRkC+a59g5QW7uJw5bpX9HWBevXa0zs=
@@ -353,6 +351,7 @@ github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0
 github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
 github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
@@ -572,10 +571,8 @@ github.com/storacha/go-piece v0.0.0-20241110131739-7631aadb97ea h1:/CaHFss3pJrWk
 github.com/storacha/go-piece v0.0.0-20241110131739-7631aadb97ea/go.mod h1:lV3s4aCpSZn9srVjfDTsIAqx3MbO8Y/7JH2M/esSZcM=
 github.com/storacha/go-ucanto v0.2.1-0.20241110061414-d4eb802c541b h1:VrHLcBUCVArxh996EV2mfQVqgj8j4K21TbDRM4PFG/4=
 github.com/storacha/go-ucanto v0.2.1-0.20241110061414-d4eb802c541b/go.mod h1:7ba9jAgqmwlF/JfyFUQcGV07uiYNlmJNu8qH4hHtrJk=
-github.com/storacha/ipni-publisher v0.0.0-20241031171227-f59f9fc3b0b8 h1:X+xD2xdNq2kQQdkcoTUTUMcG1zVGAYn5VXsQtb6vClU=
-github.com/storacha/ipni-publisher v0.0.0-20241031171227-f59f9fc3b0b8/go.mod h1:oeRwCqtWAhWodWYYVklunZbetcp/CuEn4Q+KL0zOIR0=
-github.com/storacha/ipni-publisher v0.0.0-20241112113514-13e9ce371678 h1:4MDJLcETSnNd5Y8k5Ddh0QGpxKBsoTvZaW8WguYel1M=
-github.com/storacha/ipni-publisher v0.0.0-20241112113514-13e9ce371678/go.mod h1:oeRwCqtWAhWodWYYVklunZbetcp/CuEn4Q+KL0zOIR0=
+github.com/storacha/ipni-publisher v0.0.0-20241112152400-07a540928427 h1:RoP1oLKNH4OXA37h4XgZIPSgFyyRuP3vM4DLbzjc2hk=
+github.com/storacha/ipni-publisher v0.0.0-20241112152400-07a540928427/go.mod h1:RSXcupgcsMXuFCrk+fqJHTfJKUNygt7bPFe5yJ+V9tE=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
diff --git a/pkg/internal/ipldstore/ipldstore.go b/pkg/internal/ipldstore/ipldstore.go
index 240a4f5..26ba341 100644
--- a/pkg/internal/ipldstore/ipldstore.go
+++ b/pkg/internal/ipldstore/ipldstore.go
@@ -47,7 +47,7 @@ func (i *ipldStore[K, V]) Put(ctx context.Context, key K, value V) error {
 	if err != nil {
 		return err
 	}
-	return i.ds.Put(ctx, key.String(), bytes.NewReader(data))
+	return i.ds.Put(ctx, key.String(), uint64(len(data)), bytes.NewReader(data))
 }
 
 func IPLDStore[K fmt.Stringer, V any](ds store.Store, typ schema.Type, opts ...bindnode.Option) KVStore[K, V] {
diff --git a/pkg/store/delegationstore/store.go b/pkg/store/delegationstore/store.go
index 3efcf65..d793f67 100644
--- a/pkg/store/delegationstore/store.go
+++ b/pkg/store/delegationstore/store.go
@@ -1,6 +1,7 @@
 package delegationstore
 
 import (
+	"bytes"
 	"context"
 	"fmt"
 	"io"
@@ -15,7 +16,11 @@ type delegationStore struct {
 }
 
 func (d *delegationStore) Put(ctx context.Context, dlg delegation.Delegation) error {
-	err := d.data.Put(ctx, dlg.Link().String(), dlg.Archive())
+	b, err := io.ReadAll(dlg.Archive())
+	if err != nil {
+		return fmt.Errorf("archiving delegation: %w", err)
+	}
+	err = d.data.Put(ctx, dlg.Link().String(), uint64(len(b)), bytes.NewReader(b))
 	if err != nil {
 		return fmt.Errorf("writing to datastore: %w", err)
 	}
diff --git a/pkg/store/receiptstore/receiptstore.go b/pkg/store/receiptstore/receiptstore.go
index 216f85c..fc8dfab 100644
--- a/pkg/store/receiptstore/receiptstore.go
+++ b/pkg/store/receiptstore/receiptstore.go
@@ -1,6 +1,7 @@
 package receiptstore
 
 import (
+	"bytes"
 	"context"
 	"fmt"
 	"io"
@@ -27,7 +28,12 @@ type receiptStore struct {
 func (rs *receiptStore) Put(ctx context.Context, rcpt receipt.AnyReceipt) error {
 	r := car.Encode([]datamodel.Link{rcpt.Root().Link()}, rcpt.Blocks())
 
-	err := rs.store.Put(ctx, rcpt.Root().Link().String(), r)
+	b, err := io.ReadAll(r)
+	if err != nil {
+		return fmt.Errorf("archiving delegation: %w", err)
+	}
+
+	err = rs.store.Put(ctx, rcpt.Root().Link().String(), uint64(len(b)), bytes.NewReader(b))
 	if err != nil {
 		return fmt.Errorf("writing to store: %w", err)
 	}