Skip to content
This repository was archived by the owner on Oct 5, 2023. It is now read-only.

Commit 5d280d8

Browse files
committed
feat: improved interop with go-ipfs 0.13
This ensures cid-codec introduced in ipfs/kubo#8568 gets correctly passed (+ we maintain backward-compatibility with CIDv0)
1 parent ecf364c commit 5d280d8

File tree

5 files changed

+103
-23
lines changed

5 files changed

+103
-23
lines changed

.github/workflows/go-test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
fail-fast: false
1111
matrix:
1212
os: [ "ubuntu", "windows", "macos" ]
13-
go: [ "1.16.x", "1.17.x" ]
13+
go: [ "1.17.x", "1.18.x" ]
1414
env:
1515
COVERAGES: ""
1616
runs-on: ${{ matrix.os }}-latest

dag.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import (
66
"fmt"
77
"io/ioutil"
88

9-
"github.com/ipfs/go-block-format"
9+
blocks "github.com/ipfs/go-block-format"
1010
"github.com/ipfs/go-cid"
11-
"github.com/ipfs/go-ipld-format"
11+
format "github.com/ipfs/go-ipld-format"
1212
"github.com/ipfs/interface-go-ipfs-core/options"
1313
"github.com/ipfs/interface-go-ipfs-core/path"
14+
multicodec "github.com/multiformats/go-multicodec"
1415
)
1516

1617
type httpNodeAdder HttpApi
@@ -56,13 +57,21 @@ func (api *HttpDagServ) GetMany(ctx context.Context, cids []cid.Cid) <-chan *for
5657
func (api *httpNodeAdder) add(ctx context.Context, nd format.Node, pin bool) error {
5758
c := nd.Cid()
5859
prefix := c.Prefix()
59-
format := cid.CodecToStr[prefix.Codec]
60+
61+
// preserve 'cid-codec' when sent over HTTP
62+
cidCodec := multicodec.Code(prefix.Codec).String()
63+
64+
// 'format' got replaced by 'cid-codec' in https://github.com/ipfs/interface-go-ipfs-core/pull/80
65+
// but we still support it here for backward-compatibility with use of CIDv0
66+
format := ""
6067
if prefix.Version == 0 {
68+
cidCodec = ""
6169
format = "v0"
6270
}
6371

6472
stat, err := api.core().Block().Put(ctx, bytes.NewReader(nd.RawData()),
6573
options.Block.Hash(prefix.MhType, prefix.MhLength),
74+
options.Block.CidCodec(cidCodec),
6675
options.Block.Format(format),
6776
options.Block.Pin(pin))
6877
if err != nil {

go.mod

+61-8
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,76 @@ module github.com/ipfs/go-ipfs-http-client
22

33
require (
44
github.com/ipfs/go-block-format v0.0.3
5-
github.com/ipfs/go-cid v0.0.7
6-
github.com/ipfs/go-ipfs-cmds v0.6.0
7-
github.com/ipfs/go-ipfs-files v0.0.8
5+
github.com/ipfs/go-cid v0.1.0
6+
github.com/ipfs/go-ipfs-cmds v0.7.0
7+
github.com/ipfs/go-ipfs-files v0.1.1
88
github.com/ipfs/go-ipld-format v0.4.0
99
github.com/ipfs/go-merkledag v0.6.0
10-
github.com/ipfs/go-path v0.1.1
11-
github.com/ipfs/go-unixfs v0.2.5
10+
github.com/ipfs/go-path v0.3.0
11+
github.com/ipfs/go-unixfs v0.3.1
1212
github.com/ipfs/interface-go-ipfs-core v0.7.0
1313
github.com/ipfs/iptb v1.4.0
1414
github.com/ipfs/iptb-plugins v0.3.0
1515
github.com/libp2p/go-libp2p-core v0.8.6
1616
github.com/mitchellh/go-homedir v1.1.0
17-
github.com/multiformats/go-multiaddr v0.3.3
17+
github.com/multiformats/go-multiaddr v0.5.0
1818
github.com/multiformats/go-multibase v0.0.3
1919
github.com/multiformats/go-multicodec v0.4.1
20-
github.com/multiformats/go-multihash v0.0.15
20+
github.com/multiformats/go-multihash v0.1.0
2121
github.com/pkg/errors v0.9.1
2222
)
2323

24-
go 1.16
24+
require (
25+
github.com/btcsuite/btcd v0.21.0-beta // indirect
26+
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 // indirect
27+
github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 // indirect
28+
github.com/gogo/protobuf v1.3.2 // indirect
29+
github.com/google/uuid v1.2.0 // indirect
30+
github.com/hashicorp/golang-lru v0.5.4 // indirect
31+
github.com/ipfs/bbloom v0.0.4 // indirect
32+
github.com/ipfs/go-blockservice v0.3.0 // indirect
33+
github.com/ipfs/go-datastore v0.5.0 // indirect
34+
github.com/ipfs/go-ipfs-blockstore v1.2.0 // indirect
35+
github.com/ipfs/go-ipfs-chunker v0.0.1 // indirect
36+
github.com/ipfs/go-ipfs-config v0.5.3 // indirect
37+
github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect
38+
github.com/ipfs/go-ipfs-exchange-interface v0.1.0 // indirect
39+
github.com/ipfs/go-ipfs-posinfo v0.0.1 // indirect
40+
github.com/ipfs/go-ipfs-util v0.0.2 // indirect
41+
github.com/ipfs/go-ipld-cbor v0.0.5 // indirect
42+
github.com/ipfs/go-ipld-legacy v0.1.0 // indirect
43+
github.com/ipfs/go-log v1.0.5 // indirect
44+
github.com/ipfs/go-log/v2 v2.3.0 // indirect
45+
github.com/ipfs/go-metrics-interface v0.0.1 // indirect
46+
github.com/ipfs/go-verifcid v0.0.1 // indirect
47+
github.com/ipld/go-codec-dagpb v1.3.0 // indirect
48+
github.com/ipld/go-ipld-prime v0.11.0 // indirect
49+
github.com/jbenet/goprocess v0.1.4 // indirect
50+
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
51+
github.com/libp2p/go-buffer-pool v0.0.2 // indirect
52+
github.com/libp2p/go-openssl v0.0.7 // indirect
53+
github.com/mattn/go-isatty v0.0.13 // indirect
54+
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect
55+
github.com/minio/sha256-simd v1.0.0 // indirect
56+
github.com/mr-tron/base58 v1.2.0 // indirect
57+
github.com/multiformats/go-base32 v0.0.3 // indirect
58+
github.com/multiformats/go-base36 v0.1.0 // indirect
59+
github.com/multiformats/go-varint v0.0.6 // indirect
60+
github.com/opentracing/opentracing-go v1.2.0 // indirect
61+
github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect
62+
github.com/rs/cors v1.7.0 // indirect
63+
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
64+
github.com/spaolacci/murmur3 v1.1.0 // indirect
65+
github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158 // indirect
66+
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect
67+
go.uber.org/atomic v1.7.0 // indirect
68+
go.uber.org/multierr v1.7.0 // indirect
69+
go.uber.org/zap v1.16.0 // indirect
70+
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect
71+
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 // indirect
72+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
73+
google.golang.org/protobuf v1.27.1 // indirect
74+
lukechampine.com/blake3 v1.1.6 // indirect
75+
)
76+
77+
go 1.17

0 commit comments

Comments
 (0)