diff --git a/coding.go b/coding.go index bbc158f..428eacf 100644 --- a/coding.go +++ b/coding.go @@ -9,6 +9,7 @@ import ( merkledag_pb "github.com/ipfs/go-merkledag/pb" ipld "github.com/ipld/go-ipld-prime" cidlink "github.com/ipld/go-ipld-prime/linking/cid" + "github.com/ipld/go-ipld-prime/schema" ) // DecodeDagProto is a fast path decoding to protobuf @@ -30,35 +31,51 @@ func (nb _PBNode__NodeBuilder) DecodeDagProto(r io.Reader) (ipld.Node, error) { return nil, fmt.Errorf("unmarshal failed. %v", err) } pbLinks = append(pbLinks, PBLink{ - &Link{cidlink.Link{Cid: hash}}, - &String{link.GetName()}, - &Int{int(link.GetTsize())}, + d: PBLink__Content{ + Hash: MaybeLink{ + Maybe: schema.Maybe_Value, + Value: Link{cidlink.Link{Cid: hash}}, + }, + Name: MaybeString{ + Maybe: schema.Maybe_Value, + Value: String{link.GetName()}, + }, + Tsize: MaybeInt{ + Maybe: schema.Maybe_Value, + Value: Int{int(link.GetTsize())}, + }, + }, }) } pbData := Bytes{pbn.GetData()} - return PBNode{PBLinks{pbLinks}, pbData}, nil + return PBNode{d: PBNode__Content{ + Links: PBLinks{x: pbLinks}, + Data: pbData, + }, + }, nil } // EncodeDagProto is a fast path encoding to protobuf // for PBNode types func (nd PBNode) EncodeDagProto(w io.Writer) error { pbn := new(merkledag_pb.PBNode) - pbn.Links = make([]*merkledag_pb.PBLink, 0, len(nd.Links.x)) - for _, link := range nd.Links.x { + pbn.Links = make([]*merkledag_pb.PBLink, 0, len(nd.d.Links.x)) + for _, link := range nd.d.Links.x { var hash []byte - if link.Hash != nil { - cid := link.Hash.x.(cidlink.Link).Cid + if link.d.Hash.Maybe == schema.Maybe_Value { + cid := link.d.Hash.Value.x.(cidlink.Link).Cid if cid.Defined() { hash = cid.Bytes() } } var name *string - if link.Name != nil { - name = &link.Name.x + if link.d.Name.Maybe == schema.Maybe_Value { + tmp := link.d.Name.Value.x + name = &tmp } var tsize *uint64 - if link.Tsize != nil { - tmp := uint64(link.Tsize.x) + if link.d.Tsize.Maybe == schema.Maybe_Value { + tmp := uint64(link.d.Tsize.Value.x) tsize = &tmp } pbn.Links = append(pbn.Links, &merkledag_pb.PBLink{ @@ -66,7 +83,7 @@ func (nd PBNode) EncodeDagProto(w io.Writer) error { Name: name, Tsize: tsize}) } - pbn.Data = nd.Data.x + pbn.Data = nd.d.Data.x data, err := pbn.Marshal() if err != nil { return fmt.Errorf("marshal failed. %v", err) diff --git a/go.mod b/go.mod index 8e662a6..93b5623 100644 --- a/go.mod +++ b/go.mod @@ -4,18 +4,18 @@ go 1.13 require ( github.com/ipfs/go-block-format v0.0.2 - github.com/ipfs/go-blockservice v0.1.0 - github.com/ipfs/go-cid v0.0.3 - github.com/ipfs/go-datastore v0.0.5 - github.com/ipfs/go-ipfs-blockstore v0.0.1 - github.com/ipfs/go-ipfs-chunker v0.0.1 + github.com/ipfs/go-blockservice v0.1.3 + github.com/ipfs/go-cid v0.0.5 + github.com/ipfs/go-datastore v0.4.4 + github.com/ipfs/go-ipfs-blockstore v0.1.4 + github.com/ipfs/go-ipfs-chunker v0.0.5 github.com/ipfs/go-ipfs-exchange-offline v0.0.1 - github.com/ipfs/go-ipfs-files v0.0.4 - github.com/ipfs/go-ipld-format v0.0.2 - github.com/ipfs/go-merkledag v0.2.3 - github.com/ipfs/go-unixfs v0.2.2-0.20190827150610-868af2e9e5cb - github.com/ipld/go-ipld-prime v0.0.2-0.20191108012745-28a82f04c785 + github.com/ipfs/go-ipfs-files v0.0.8 + github.com/ipfs/go-ipld-format v0.2.0 + github.com/ipfs/go-merkledag v0.3.1 + github.com/ipfs/go-unixfs v0.2.4 + github.com/ipld/go-ipld-prime v0.0.2-0.20200229094926-eb71617f4aeb github.com/jbenet/go-random v0.0.0-20190219211222-123a90aedc0c - github.com/multiformats/go-multihash v0.0.5 - github.com/warpfork/go-wish v0.0.0-20190328234359-8b3e70f8e830 + github.com/multiformats/go-multihash v0.0.13 + github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a ) diff --git a/go.sum b/go.sum index 37ea119..9e1f66a 100644 --- a/go.sum +++ b/go.sum @@ -17,6 +17,8 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 h1:HVTnpeuvF6Owjd5mniCL8DEXo7uYXdQEmOP4FJbV5tg= +github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p1d6YEZWvFzEh4KLyvBcVSnrfNDDvK2zfK/4x2v/4pE= github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -32,6 +34,8 @@ github.com/go-check/check v0.0.0-20180628173108-788fd7840127 h1:0gkP6mzaMqkmpcJY github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= @@ -47,6 +51,8 @@ github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfm github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= @@ -54,43 +60,65 @@ github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7 github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ipfs/bbloom v0.0.1 h1:s7KkiBPfxCeDVo47KySjK0ACPc5GJRUxFpdyWEuDjhw= github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= +github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= +github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= github.com/ipfs/go-bitswap v0.1.0/go.mod h1:FFJEf18E9izuCqUtHxbWEvq+reg7o4CW5wSAE1wsxj0= github.com/ipfs/go-bitswap v0.1.2 h1:IkhOPiifc6b2LWTi/vp8TXwNT0eGCsizI1JFbZ08IQQ= github.com/ipfs/go-bitswap v0.1.2/go.mod h1:qxSWS4NXGs7jQ6zQvoPY3+NmOfHHG47mhkiLzBpJQIs= +github.com/ipfs/go-bitswap v0.1.8 h1:38X1mKXkiU6Nzw4TOSWD8eTVY5eX3slQunv3QEWfXKg= +github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM= github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= github.com/ipfs/go-block-format v0.0.2 h1:qPDvcP19izTjU8rgo6p7gTXZlkMkF5bz5G3fqIsSCPE= github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= github.com/ipfs/go-blockservice v0.1.0 h1:dh2i7xjMbCtf0ZSMyQAF2qpV/pEEmM7yVpQ00+gik6U= github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M= +github.com/ipfs/go-blockservice v0.1.3 h1:9XgsPMwwWJSC9uVr2pMDsW2qFTBSkxpGMhmna8mIjPM= +github.com/ipfs/go-blockservice v0.1.3/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.3 h1:UIAh32wymBpStoe83YCzwVQQ5Oy/H0FdxvUS6DJDzms= github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4 h1:UlfXKrZx1DjZoBhQHmNHLC1fK1dUJDN20Y28A7s+gJ8= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.5 h1:o0Ix8e/ql7Zb5UVUJEUfjsWCIY8t48++9lR8qi6oiJU= +github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= github.com/ipfs/go-datastore v0.0.5 h1:q3OfiOZV5rlsK1H5V8benjeUApRfMGs4Mrhmr6NriQo= github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= +github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= +github.com/ipfs/go-datastore v0.4.4 h1:rjvQ9+muFaJ+QZ7dN5B1MSDNQ0JVZKkkES/rMZmA8X8= +github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= github.com/ipfs/go-ipfs-blockstore v0.0.1 h1:O9n3PbmTYZoNhkgkEyrXTznbmktIXif62xLX+8dPHzc= github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= +github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw= +github.com/ipfs/go-ipfs-blockstore v0.1.4 h1:2SGI6U1B44aODevza8Rde3+dY30Pb+lbcObe1LETxOQ= +github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ= github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ= github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= github.com/ipfs/go-ipfs-chunker v0.0.1 h1:cHUUxKFQ99pozdahi+uSC/3Y6HeRpi9oTeUHbE27SEw= github.com/ipfs/go-ipfs-chunker v0.0.1/go.mod h1:tWewYK0we3+rMbOh7pPFGDyypCtvGcBFymgY4rSDLAw= +github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8= +github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ= github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= github.com/ipfs/go-ipfs-ds-help v0.0.1 h1:QBg+Ts2zgeemK/dB0saiF/ykzRGgfoFMT90Rzo0OnVU= github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= +github.com/ipfs/go-ipfs-ds-help v0.1.1 h1:IW/bXGeaAZV2VH0Kuok+Ohva/zHkHmeLFBxC1k7mNPc= +github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs= github.com/ipfs/go-ipfs-exchange-interface v0.0.1 h1:LJXIo9W7CAmugqI+uofioIpRb6rY30GUu7G6LUfpMvM= github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= github.com/ipfs/go-ipfs-exchange-offline v0.0.1 h1:P56jYKZF7lDDOLx5SotVh5KFxoY6C81I1NSHW1FxGew= github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= -github.com/ipfs/go-ipfs-files v0.0.4 h1:WzRCivcybUQch/Qh6v8LBRhKtRsjnwyiuOV09mK7mrE= -github.com/ipfs/go-ipfs-files v0.0.4/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= +github.com/ipfs/go-ipfs-files v0.0.8 h1:8o0oFJkJ8UkO/ABl8T6ac6tKF3+NIpj67aAB6ZpusRg= +github.com/ipfs/go-ipfs-files v0.0.8/go.mod h1:wiN/jSG8FKyk7N0WyctKSvq3ljIa2NNTiZB55kpTdOs= github.com/ipfs/go-ipfs-posinfo v0.0.1 h1:Esoxj+1JgSjX0+ylc0hUmJCOv6V2vFoZiETLR6OtpRs= github.com/ipfs/go-ipfs-posinfo v0.0.1/go.mod h1:SwyeVP+jCwiDu0C313l/8jg6ZxM0qqtlt2a0vILTc1A= github.com/ipfs/go-ipfs-pq v0.0.1 h1:zgUotX8dcAB/w/HidJh1zzc1yFq6Vm8J7T2F4itj/RU= @@ -101,23 +129,31 @@ github.com/ipfs/go-ipfs-util v0.0.1 h1:Wz9bL2wB2YBJqggkA4dD7oSmqB4cAnpNbGrlHJulv github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipld-cbor v0.0.2 h1:amzFztBQQQ69UA5+f7JRfoXF/z2l//MGfEDHVkS20+s= github.com/ipfs/go-ipld-cbor v0.0.2/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= +github.com/ipfs/go-ipld-cbor v0.0.3 h1:ENsxvybwkmke7Z/QJOmeJfoguj6GH3Y0YOaGrfy9Q0I= +github.com/ipfs/go-ipld-cbor v0.0.3/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= github.com/ipfs/go-ipld-format v0.0.2 h1:OVAGlyYT6JPZ0pEfGntFPS40lfrDmaDbQwNHEY2G9Zs= github.com/ipfs/go-ipld-format v0.0.2/go.mod h1:4B6+FM2u9OJ9zCV+kSbgFAZlOrv1Hqbf0INGQgiKf9k= +github.com/ipfs/go-ipld-format v0.2.0 h1:xGlJKkArkmBvowr+GMCX0FEZtkro71K1AwiKnL37mwA= +github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= github.com/ipfs/go-log v0.0.1 h1:9XTUN/rW64BCG1YhPK9Hoy3q8nr4gOmHHBpgFdfw6Lc= github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= github.com/ipfs/go-merkledag v0.2.3 h1:aMdkK9G1hEeNvn3VXfiEMLY0iJnbiQQUHnM0HFJREsE= github.com/ipfs/go-merkledag v0.2.3/go.mod h1:SQiXrtSts3KGNmgOzMICy5c0POOpUNQLvB3ClKnBAlk= +github.com/ipfs/go-merkledag v0.3.1 h1:3UqWINBEr3/N+r6OwgFXAddDP/8zpQX/8J7IGVOCqRQ= +github.com/ipfs/go-merkledag v0.3.1/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M= 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.1.0 h1:bpRbgv76eT4avutNPDFZuCPOQus6qTgurEYxfulgZW4= github.com/ipfs/go-peertaskqueue v0.1.0/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= -github.com/ipfs/go-unixfs v0.2.2-0.20190827150610-868af2e9e5cb h1:tmWYgjltxwM7PDmFJgWgLuy5qx24csUvRoIiO+F/zQ4= -github.com/ipfs/go-unixfs v0.2.2-0.20190827150610-868af2e9e5cb/go.mod h1:IwAAgul1UQIcNZzKPYZWOCijryFBeCV79cNubPzol+k= +github.com/ipfs/go-peertaskqueue v0.1.1 h1:+gPjbI+V3NktXZOqJA1kzbms2pYmhjgQQal0MzZrOAY= +github.com/ipfs/go-peertaskqueue v0.1.1/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= +github.com/ipfs/go-unixfs v0.2.4 h1:6NwppOXefWIyysZ4LR/qUBPvXd5//8J3jiMdvpbw6Lo= +github.com/ipfs/go-unixfs v0.2.4/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw= github.com/ipfs/go-verifcid v0.0.1 h1:m2HI7zIuR5TFyQ1b79Da5N9dnnCP1vcu2QqawmWlK2E= github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= -github.com/ipld/go-ipld-prime v0.0.2-0.20191108012745-28a82f04c785 h1:fASnkvtR+SmB2y453RxmDD3Uvd4LonVUgFGk9JoDaZs= -github.com/ipld/go-ipld-prime v0.0.2-0.20191108012745-28a82f04c785/go.mod h1:bDDSvVz7vaK12FNvMeRYnpRFkSUPNQOiCYQezMD/P3w= +github.com/ipld/go-ipld-prime v0.0.2-0.20200229094926-eb71617f4aeb h1:uvoZ2aTjsTt/6W5hkzj3JkPMY3oHvcla4WA29k4Jk0I= +github.com/ipld/go-ipld-prime v0.0.2-0.20200229094926-eb71617f4aeb/go.mod h1:uVIwe/u0H4VdKv3kaN1ck7uCb6yD9cFLS9/ELyXbsw8= github.com/jackpal/gateway v1.0.5 h1:qzXWUJfuMdlLMtt0a3Dgt+xkWQiA5itDEITVJtuSwMc= github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v1.0.1 h1:i0LektDkO1QlrTm/cSuP+PyBCDnYvjPLGl4LdWEMiaA= @@ -138,6 +174,7 @@ github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVY github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b h1:wxtKgYHEncAU00muMD06dzLiahtGM1eouRNOzVV7tdQ= @@ -206,6 +243,8 @@ github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6 github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.3 h1:VsOlWispTivSsOMg70e0W77y6oiSBSRCyP6URrWvE04= github.com/libp2p/go-msgio v0.0.3/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= +github.com/libp2p/go-msgio v0.0.4 h1:agEFehY3zWJFUHK6SEMR7UYmk2z6kC3oeCM7ybLhguA= +github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-nat v0.0.3 h1:l6fKV+p0Xa354EqQOQP+d8CivdLM4kl5GxC1hSc/UeI= github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= github.com/libp2p/go-reuseport v0.0.1 h1:7PhkfH73VXfPJYKQ6JwS5I/eVcoyYi9IMNGc6FWpFLw= @@ -235,10 +274,15 @@ github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+ github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.0 h1:U41/2erhAKcmSI14xh/ZTUdBPOzDOIfS93ibzUSl8KM= github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU= +github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.2 h1:ZEw4I2EgPKDJ2iEw0cNmLB3ROrEmkOtXIkaG7wZg+78= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.1.3 h1:v+sk57XuaCKGXpWtVBX8YJzO7hMGx4Aajh4TQbdEFdc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI= github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= @@ -257,8 +301,14 @@ github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/g github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= github.com/multiformats/go-multihash v0.0.5 h1:1wxmCvTXAifAepIMyF39vZinRw5sbqjPs/UIi93+uik= github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= +github.com/multiformats/go-multihash v0.0.10 h1:lMoNbh2Ssd9PUF74Nz008KGzGPlfeV6wH3rit5IIGCM= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.13 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multistream v0.1.0 h1:UpO6jrsjqs46mqAK3n6wKRYFhugss9ArzbyUzU+4wkQ= github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= +github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= @@ -276,6 +326,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/polydawn/refmt v0.0.0-20190408063855-01bf1e26dd14 h1:2m16U/rLwVaRdz7ANkHtHTodP3zTP3N451MADg64x5k= github.com/polydawn/refmt v0.0.0-20190408063855-01bf1e26dd14/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1 h1:CskT+S6Ay54OwxBGB0R3Rsx4Muto6UnEYTyKJbyRIAI= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= @@ -295,6 +347,8 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/warpfork/go-wish v0.0.0-20190328234359-8b3e70f8e830 h1:8kxMKmKzXXL4Ru1nyhvdms/JjWt+3YLpvRb/bAjO/y0= github.com/warpfork/go-wish v0.0.0-20190328234359-8b3e70f8e830/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a h1:G++j5e0OC488te356JvdhaM8YS6nMsjLAYF7JxCv07w= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= @@ -317,6 +371,8 @@ golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -337,16 +393,22 @@ golang.org/x/sys v0.0.0-20190524122548-abf6ff778158 h1:v73Zw0Y1htnV0qaOAYSNiuIAv golang.org/x/sys v0.0.0-20190524122548-abf6ff778158/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae h1:xiXzMMEQdQcric9hXtr1QU98MHunKK7OTtsoU6bYWs4= golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 h1:ywK/j/KkyTHcdyYSZNXGjMwgmDSfjglYZ3vStQ/gSCU= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= diff --git a/node_builder_chooser.go b/node_builder_chooser.go index c42d213..3e6da33 100644 --- a/node_builder_chooser.go +++ b/node_builder_chooser.go @@ -9,16 +9,16 @@ import ( // AddDagPBSupportToChooser takes an existing NodeBuilderChooser and subs in // Protobuf and Raw node builders where neccesary func AddDagPBSupportToChooser(existing traversal.NodeBuilderChooser) traversal.NodeBuilderChooser { - return func(lnk ipld.Link, lnkCtx ipld.LinkContext) ipld.NodeBuilder { + return func(lnk ipld.Link, lnkCtx ipld.LinkContext) (ipld.NodeBuilder, error) { c, ok := lnk.(cidlink.Link) if !ok { return existing(lnk, lnkCtx) } switch c.Cid.Prefix().Codec { case 0x70: - return PBNode__NodeBuilder() + return PBNode__NodeBuilder(), nil case 0x55: - return RawNode__NodeBuilder() + return RawNode__NodeBuilder(), nil default: return existing(lnk, lnkCtx) } diff --git a/node_builder_chooser_test.go b/node_builder_chooser_test.go index 64a6b95..5fc7050 100644 --- a/node_builder_chooser_test.go +++ b/node_builder_chooser_test.go @@ -17,11 +17,11 @@ import ( func TestNodeBuilderChooser(t *testing.T) { nb1 := ipldfree.NodeBuilder() nb2 := dagpb.String__NodeBuilder() - var nb1Chooser traversal.NodeBuilderChooser = dagpb.AddDagPBSupportToChooser(func(ipld.Link, ipld.LinkContext) ipld.NodeBuilder { - return nb1 + var nb1Chooser traversal.NodeBuilderChooser = dagpb.AddDagPBSupportToChooser(func(ipld.Link, ipld.LinkContext) (ipld.NodeBuilder, error) { + return nb1, nil }) - var nb2Chooser traversal.NodeBuilderChooser = dagpb.AddDagPBSupportToChooser(func(ipld.Link, ipld.LinkContext) ipld.NodeBuilder { - return nb2 + var nb2Chooser traversal.NodeBuilderChooser = dagpb.AddDagPBSupportToChooser(func(ipld.Link, ipld.LinkContext) (ipld.NodeBuilder, error) { + return nb2, nil }) bytes := randomBytes(256) protoPrefix := merkledag.V1CidPrefix() @@ -48,11 +48,23 @@ func TestNodeBuilderChooser(t *testing.T) { rawLink := cidlink.Link{Cid: rawCid} cborLink := cidlink.Link{Cid: cborCid} - Wish(t, nb1Chooser(protoLink, ipld.LinkContext{}), ShouldEqual, dagpb.PBNode__NodeBuilder()) - Wish(t, nb1Chooser(rawLink, ipld.LinkContext{}), ShouldEqual, dagpb.RawNode__NodeBuilder()) - Wish(t, nb1Chooser(cborLink, ipld.LinkContext{}), ShouldEqual, nb1) - Wish(t, nb2Chooser(protoLink, ipld.LinkContext{}), ShouldEqual, dagpb.PBNode__NodeBuilder()) - Wish(t, nb2Chooser(rawLink, ipld.LinkContext{}), ShouldEqual, dagpb.RawNode__NodeBuilder()) - Wish(t, nb2Chooser(cborLink, ipld.LinkContext{}), ShouldEqual, nb2) + nb, err := nb1Chooser(protoLink, ipld.LinkContext{}) + Wish(t, err, ShouldEqual, nil) + Wish(t, nb, ShouldEqual, dagpb.PBNode__NodeBuilder()) + nb, err = nb1Chooser(rawLink, ipld.LinkContext{}) + Wish(t, err, ShouldEqual, nil) + Wish(t, nb, ShouldEqual, dagpb.RawNode__NodeBuilder()) + nb, err = nb1Chooser(cborLink, ipld.LinkContext{}) + Wish(t, err, ShouldEqual, nil) + Wish(t, nb, ShouldEqual, nb1) + nb, err = nb2Chooser(protoLink, ipld.LinkContext{}) + Wish(t, err, ShouldEqual, nil) + Wish(t, nb, ShouldEqual, dagpb.PBNode__NodeBuilder()) + nb, err = nb2Chooser(rawLink, ipld.LinkContext{}) + Wish(t, err, ShouldEqual, nil) + Wish(t, nb, ShouldEqual, dagpb.RawNode__NodeBuilder()) + nb, err = nb2Chooser(cborLink, ipld.LinkContext{}) + Wish(t, err, ShouldEqual, nil) + Wish(t, nb, ShouldEqual, nb2) } diff --git a/pb_node_gen.go b/pb_node_gen.go index 919454c..4e9b2b1 100644 --- a/pb_node_gen.go +++ b/pb_node_gen.go @@ -2,7 +2,6 @@ package dagpb import ( ipld "github.com/ipld/go-ipld-prime" - "github.com/ipld/go-ipld-prime/impl/typed" "github.com/ipld/go-ipld-prime/schema" ) @@ -34,19 +33,19 @@ func (b String__Content) MustBuild() String { } type MaybeString struct { - Maybe typed.Maybe + Maybe schema.Maybe Value String } func (m MaybeString) Must() String { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = String{} -var _ typed.Node = String{} +var _ schema.TypedNode = String{} func (String) Type() schema.Type { return nil /*TODO:typelit*/ @@ -149,19 +148,19 @@ func (x Int) Int() int { } // TODO generateKindInt.EmitNativeBuilder type MaybeInt struct { - Maybe typed.Maybe + Maybe schema.Maybe Value Int } func (m MaybeInt) Must() Int { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = Int{} -var _ typed.Node = Int{} +var _ schema.TypedNode = Int{} func (Int) Type() schema.Type { return nil /*TODO:typelit*/ @@ -262,19 +261,19 @@ type Bytes struct{ x []byte } // TODO generateKindBytes.EmitNativeAccessors // TODO generateKindBytes.EmitNativeBuilder type MaybeBytes struct { - Maybe typed.Maybe + Maybe schema.Maybe Value Bytes } func (m MaybeBytes) Must() Bytes { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = Bytes{} -var _ typed.Node = Bytes{} +var _ schema.TypedNode = Bytes{} func (Bytes) Type() schema.Type { return nil /*TODO:typelit*/ @@ -375,19 +374,19 @@ type Link struct{ x ipld.Link } // TODO generateKindLink.EmitNativeAccessors // TODO generateKindLink.EmitNativeBuilder type MaybeLink struct { - Maybe typed.Maybe + Maybe schema.Maybe Value Link } func (m MaybeLink) Must() Link { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = Link{} -var _ typed.Node = Link{} +var _ schema.TypedNode = Link{} func (Link) Type() schema.Type { return nil /*TODO:typelit*/ @@ -485,36 +484,28 @@ func (Link) Representation() ipld.Node { panic("TODO representation") } type PBLink struct{ - Hash *Link - Name *String - Tsize *Int - + d PBLink__Content } -func (x Link) FieldHash() Link { - // TODO going to tear through here with changes to Maybe system in a moment anyway - return Link{} +func (x PBLink) FieldHash()MaybeLink { + return x.d.Hash } -func (x String) FieldName() String { - // TODO going to tear through here with changes to Maybe system in a moment anyway - return String{} +func (x PBLink) FieldName()MaybeString { + return x.d.Name } -func (x Int) FieldTsize() Int { - // TODO going to tear through here with changes to Maybe system in a moment anyway - return Int{} +func (x PBLink) FieldTsize()MaybeInt { + return x.d.Tsize } type PBLink__Content struct { - // TODO - // TODO - // TODO + Hash MaybeLink + Name MaybeString + Tsize MaybeInt } func (b PBLink__Content) Build() (PBLink, error) { - x := PBLink{ - // TODO - } + x := PBLink{b} // FUTURE : want to support customizable validation. // but 'if v, ok := x.(schema.Validatable); ok {' doesn't fly: need a way to work on concrete types. return x, nil @@ -528,19 +519,19 @@ func (b PBLink__Content) MustBuild() PBLink { } type MaybePBLink struct { - Maybe typed.Maybe + Maybe schema.Maybe Value PBLink } func (m MaybePBLink) Must() PBLink { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = PBLink{} -var _ typed.Node = PBLink{} +var _ schema.TypedNode = PBLink{} func (PBLink) Type() schema.Type { return nil /*TODO:typelit*/ @@ -551,22 +542,22 @@ func (PBLink) ReprKind() ipld.ReprKind { func (x PBLink) LookupString(key string) (ipld.Node, error) { switch key { case "Hash": - if x.Hash == nil { + if x.d.Hash.Maybe == schema.Maybe_Absent { return ipld.Undef, nil } - return *x.Hash, nil + return x.d.Hash.Value, nil case "Name": - if x.Name == nil { + if x.d.Name.Maybe == schema.Maybe_Absent { return ipld.Undef, nil } - return *x.Name, nil + return x.d.Name.Value, nil case "Tsize": - if x.Tsize == nil { + if x.d.Tsize.Maybe == schema.Maybe_Absent { return ipld.Undef, nil } - return *x.Tsize, nil + return x.d.Tsize.Value, nil default: - return nil, typed.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} + return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} } } func (x PBLink) Lookup(key ipld.Node) (ipld.Node, error) { @@ -598,25 +589,25 @@ func (itr *_PBLink__Itr) Next() (k ipld.Node, v ipld.Node, _ error) { switch itr.idx { case 0: k = String{"Hash"} - if itr.node.Hash == nil { + if itr.node.d.Hash.Maybe == schema.Maybe_Absent { v = ipld.Undef break } - v = itr.node.Hash + v = itr.node.d.Hash.Value case 1: k = String{"Name"} - if itr.node.Name == nil { + if itr.node.d.Name.Maybe == schema.Maybe_Absent { v = ipld.Undef break } - v = itr.node.Name + v = itr.node.d.Name.Value case 2: k = String{"Tsize"} - if itr.node.Tsize == nil { + if itr.node.d.Tsize.Maybe == schema.Maybe_Absent { v = ipld.Undef break } - v = itr.node.Tsize + v = itr.node.d.Tsize.Value default: panic("unreachable") } @@ -666,7 +657,11 @@ func PBLink__NodeBuilder() ipld.NodeBuilder { return _PBLink__NodeBuilder{} } func (nb _PBLink__NodeBuilder) CreateMap() (ipld.MapBuilder, error) { - return &_PBLink__MapBuilder{v:&PBLink{}}, nil + mb := &_PBLink__MapBuilder{v:&PBLink{}} + mb.v.d.Hash.Maybe = schema.Maybe_Absent + mb.v.d.Name.Maybe = schema.Maybe_Absent + mb.v.d.Tsize.Maybe = schema.Maybe_Absent + return mb, nil } type _PBLink__MapBuilder struct{ @@ -683,43 +678,46 @@ func (mb *_PBLink__MapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(Link) if !ok { panic("field 'Hash' in type PBLink is type Link; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Hash = &x + mb.v.d.Hash.Value = x + mb.v.d.Hash.Maybe = schema.Maybe_Value case "Name": if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(String) if !ok { panic("field 'Name' in type PBLink is type String; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Name = &x + mb.v.d.Name.Value = x + mb.v.d.Name.Maybe = schema.Maybe_Value case "Tsize": if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(Int) if !ok { panic("field 'Tsize' in type PBLink is type Int; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Tsize = &x + mb.v.d.Tsize.Value = x + mb.v.d.Tsize.Maybe = schema.Maybe_Value default: - return typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} + return schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} } return nil } @@ -743,7 +741,7 @@ func (mb *_PBLink__MapBuilder) BuilderForValue(ks string) ipld.NodeBuilder { case "Tsize": return Int__NodeBuilder() default: - panic(typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) + panic(schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) } return nil } @@ -793,22 +791,22 @@ func (_PBLink__Repr) ReprKind() ipld.ReprKind { func (rn _PBLink__Repr) LookupString(key string) (ipld.Node, error) { switch key { case "Hash": - if rn.n.Hash == nil { + if rn.n.d.Hash.Maybe == schema.Maybe_Absent { return ipld.Undef, ipld.ErrNotExists{ipld.PathSegmentOfString(key)} } - return *rn.n.Hash, nil + return rn.n.d.Hash.Value, nil case "Name": - if rn.n.Name == nil { + if rn.n.d.Name.Maybe == schema.Maybe_Absent { return ipld.Undef, ipld.ErrNotExists{ipld.PathSegmentOfString(key)} } - return *rn.n.Name, nil + return rn.n.d.Name.Value, nil case "Tsize": - if rn.n.Tsize == nil { + if rn.n.d.Tsize.Maybe == schema.Maybe_Absent { return ipld.Undef, ipld.ErrNotExists{ipld.PathSegmentOfString(key)} } - return *rn.n.Tsize, nil + return rn.n.d.Tsize.Value, nil default: - return nil, typed.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} + return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} } } func (rn _PBLink__Repr) Lookup(key ipld.Node) (ipld.Node, error) { @@ -841,25 +839,25 @@ func (itr *_PBLink__ReprItr) Next() (k ipld.Node, v ipld.Node, _ error) { switch itr.idx { case 0: k = String{"Hash"} - if itr.node.Hash == nil { + if itr.node.d.Hash.Maybe == schema.Maybe_Absent { itr.idx++ continue } - v = itr.node.Hash + v = itr.node.d.Hash.Value case 1: k = String{"Name"} - if itr.node.Name == nil { + if itr.node.d.Name.Maybe == schema.Maybe_Absent { itr.idx++ continue } - v = itr.node.Name + v = itr.node.d.Name.Value case 2: k = String{"Tsize"} - if itr.node.Tsize == nil { + if itr.node.d.Tsize.Maybe == schema.Maybe_Absent { itr.idx++ continue } - v = itr.node.Tsize + v = itr.node.d.Tsize.Value default: panic("unreachable") } @@ -876,13 +874,13 @@ func (_PBLink__Repr) ListIterator() ipld.ListIterator { } func (rn _PBLink__Repr) Length() int { l := 3 - if rn.n.Hash == nil { + if rn.n.d.Hash.Maybe == schema.Maybe_Absent { l-- } - if rn.n.Name == nil { + if rn.n.d.Name.Maybe == schema.Maybe_Absent { l-- } - if rn.n.Tsize == nil { + if rn.n.d.Tsize.Maybe == schema.Maybe_Absent { l-- } return l @@ -920,7 +918,11 @@ func PBLink__ReprBuilder() ipld.NodeBuilder { return _PBLink__ReprBuilder{} } func (nb _PBLink__ReprBuilder) CreateMap() (ipld.MapBuilder, error) { - return &_PBLink__ReprMapBuilder{v:&PBLink{}}, nil + mb := &_PBLink__ReprMapBuilder{v:&PBLink{}} + mb.v.d.Hash.Maybe = schema.Maybe_Absent + mb.v.d.Name.Maybe = schema.Maybe_Absent + mb.v.d.Tsize.Maybe = schema.Maybe_Absent + return mb, nil } type _PBLink__ReprMapBuilder struct{ @@ -943,15 +945,16 @@ func (mb *_PBLink__ReprMapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(Link) if !ok { panic("field 'Hash' (key: 'Hash') in type PBLink is type Link; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Hash = &x + mb.v.d.Hash.Value = x + mb.v.d.Hash.Maybe = schema.Maybe_Value mb.Hash__isset = true case "Name": if mb.Name__isset { @@ -960,15 +963,16 @@ func (mb *_PBLink__ReprMapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(String) if !ok { panic("field 'Name' (key: 'Name') in type PBLink is type String; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Name = &x + mb.v.d.Name.Value = x + mb.v.d.Name.Maybe = schema.Maybe_Value mb.Name__isset = true case "Tsize": if mb.Tsize__isset { @@ -977,18 +981,19 @@ func (mb *_PBLink__ReprMapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(Int) if !ok { panic("field 'Tsize' (key: 'Tsize') in type PBLink is type Int; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Tsize = &x + mb.v.d.Tsize.Value = x + mb.v.d.Tsize.Maybe = schema.Maybe_Value mb.Tsize__isset = true default: - return typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} + return schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} } return nil } @@ -1012,7 +1017,7 @@ func (mb *_PBLink__ReprMapBuilder) BuilderForValue(ks string) ipld.NodeBuilder { case "Tsize": return Int__NodeBuilder() default: - panic(typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) + panic(schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) } return nil } @@ -1053,19 +1058,19 @@ type PBLinks struct{ // TODO generateKindList.EmitNativeAccessors // TODO generateKindList.EmitNativeBuilder type MaybePBLinks struct { - Maybe typed.Maybe + Maybe schema.Maybe Value PBLinks } func (m MaybePBLinks) Must() PBLinks { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = PBLinks{} -var _ typed.Node = PBLinks{} +var _ schema.TypedNode = PBLinks{} func (PBLinks) Type() schema.Type { return nil /*TODO:typelit*/ @@ -1208,9 +1213,9 @@ func (lb *_PBLinks__ListBuilder) validate(v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } _, ok = v.(PBLink) if !ok { @@ -1299,30 +1304,24 @@ func (n PBLinks) Representation() ipld.Node { panic("TODO representation") } type PBNode struct{ - Links PBLinks - Data Bytes - + d PBNode__Content } -func (x PBLinks) FieldLinks() PBLinks { - // TODO going to tear through here with changes to Maybe system in a moment anyway - return PBLinks{} +func (x PBNode) FieldLinks()PBLinks { + return x.d.Links } -func (x Bytes) FieldData() Bytes { - // TODO going to tear through here with changes to Maybe system in a moment anyway - return Bytes{} +func (x PBNode) FieldData()Bytes { + return x.d.Data } type PBNode__Content struct { - // TODO - // TODO + Links PBLinks + Data Bytes } func (b PBNode__Content) Build() (PBNode, error) { - x := PBNode{ - // TODO - } + x := PBNode{b} // FUTURE : want to support customizable validation. // but 'if v, ok := x.(schema.Validatable); ok {' doesn't fly: need a way to work on concrete types. return x, nil @@ -1336,19 +1335,19 @@ func (b PBNode__Content) MustBuild() PBNode { } type MaybePBNode struct { - Maybe typed.Maybe + Maybe schema.Maybe Value PBNode } func (m MaybePBNode) Must() PBNode { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = PBNode{} -var _ typed.Node = PBNode{} +var _ schema.TypedNode = PBNode{} func (PBNode) Type() schema.Type { return nil /*TODO:typelit*/ @@ -1359,11 +1358,11 @@ func (PBNode) ReprKind() ipld.ReprKind { func (x PBNode) LookupString(key string) (ipld.Node, error) { switch key { case "Links": - return x.Links, nil + return x.d.Links, nil case "Data": - return x.Data, nil + return x.d.Data, nil default: - return nil, typed.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} + return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} } } func (x PBNode) Lookup(key ipld.Node) (ipld.Node, error) { @@ -1395,10 +1394,10 @@ func (itr *_PBNode__Itr) Next() (k ipld.Node, v ipld.Node, _ error) { switch itr.idx { case 0: k = String{"Links"} - v = itr.node.Links + v = itr.node.d.Links case 1: k = String{"Data"} - v = itr.node.Data + v = itr.node.d.Data default: panic("unreachable") } @@ -1448,7 +1447,8 @@ func PBNode__NodeBuilder() ipld.NodeBuilder { return _PBNode__NodeBuilder{} } func (nb _PBNode__NodeBuilder) CreateMap() (ipld.MapBuilder, error) { - return &_PBNode__MapBuilder{v:&PBNode{}}, nil + mb := &_PBNode__MapBuilder{v:&PBNode{}} + return mb, nil } type _PBNode__MapBuilder struct{ @@ -1467,32 +1467,32 @@ func (mb *_PBNode__MapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(PBLinks) if !ok { panic("field 'Links' in type PBNode is type PBLinks; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Links = x + mb.v.d.Links = x mb.Links__isset = true case "Data": if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(Bytes) if !ok { panic("field 'Data' in type PBNode is type Bytes; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Data = x + mb.v.d.Data = x mb.Data__isset = true default: - return typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} + return schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} } return nil } @@ -1520,7 +1520,7 @@ func (mb *_PBNode__MapBuilder) BuilderForValue(ks string) ipld.NodeBuilder { case "Data": return Bytes__NodeBuilder() default: - panic(typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) + panic(schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) } return nil } @@ -1570,11 +1570,11 @@ func (_PBNode__Repr) ReprKind() ipld.ReprKind { func (rn _PBNode__Repr) LookupString(key string) (ipld.Node, error) { switch key { case "Links": - return rn.n.Links, nil + return rn.n.d.Links, nil case "Data": - return rn.n.Data, nil + return rn.n.d.Data, nil default: - return nil, typed.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} + return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, FieldName: key} } } func (rn _PBNode__Repr) Lookup(key ipld.Node) (ipld.Node, error) { @@ -1607,10 +1607,10 @@ func (itr *_PBNode__ReprItr) Next() (k ipld.Node, v ipld.Node, _ error) { switch itr.idx { case 0: k = String{"Links"} - v = itr.node.Links + v = itr.node.d.Links case 1: k = String{"Data"} - v = itr.node.Data + v = itr.node.d.Data default: panic("unreachable") } @@ -1662,7 +1662,8 @@ func PBNode__ReprBuilder() ipld.NodeBuilder { return _PBNode__ReprBuilder{} } func (nb _PBNode__ReprBuilder) CreateMap() (ipld.MapBuilder, error) { - return &_PBNode__ReprMapBuilder{v:&PBNode{}}, nil + mb := &_PBNode__ReprMapBuilder{v:&PBNode{}} + return mb, nil } type _PBNode__ReprMapBuilder struct{ @@ -1684,15 +1685,15 @@ func (mb *_PBNode__ReprMapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(PBLinks) if !ok { panic("field 'Links' (key: 'Links') in type PBNode is type PBLinks; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Links = x + mb.v.d.Links = x mb.Links__isset = true case "Data": if mb.Data__isset { @@ -1701,18 +1702,18 @@ func (mb *_PBNode__ReprMapBuilder) Insert(k, v ipld.Node) error { if v.IsNull() { panic("type mismatch on struct field assignment: cannot assign null to non-nullable field") // FIXME need an error type for this } - tv, ok := v.(typed.Node) + tv, ok := v.(schema.TypedNode) if !ok { - panic("need typed.Node for insertion into struct") // FIXME need an error type for this + panic("need schema.TypedNode for insertion into struct") // FIXME need an error type for this } x, ok := v.(Bytes) if !ok { panic("field 'Data' (key: 'Data') in type PBNode is type Bytes; cannot assign "+tv.Type().Name()) // FIXME need an error type for this } - mb.v.Data = x + mb.v.d.Data = x mb.Data__isset = true default: - return typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} + return schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks} } return nil } @@ -1740,7 +1741,7 @@ func (mb *_PBNode__ReprMapBuilder) BuilderForValue(ks string) ipld.NodeBuilder { case "Data": return Bytes__NodeBuilder() default: - panic(typed.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) + panic(schema.ErrNoSuchField{Type: nil /*TODO:typelit*/, FieldName: ks}) } return nil } diff --git a/raw_node_gen.go b/raw_node_gen.go index 9e89c13..9c95bb0 100644 --- a/raw_node_gen.go +++ b/raw_node_gen.go @@ -2,7 +2,6 @@ package dagpb import ( ipld "github.com/ipld/go-ipld-prime" - "github.com/ipld/go-ipld-prime/impl/typed" "github.com/ipld/go-ipld-prime/schema" ) @@ -13,19 +12,19 @@ type RawNode struct{ x []byte } // TODO generateKindBytes.EmitNativeAccessors // TODO generateKindBytes.EmitNativeBuilder type MaybeRawNode struct { - Maybe typed.Maybe + Maybe schema.Maybe Value RawNode } func (m MaybeRawNode) Must() RawNode { - if m.Maybe != typed.Maybe_Value { + if m.Maybe != schema.Maybe_Value { panic("unbox of a maybe rejected") } return m.Value } var _ ipld.Node = RawNode{} -var _ typed.Node = RawNode{} +var _ schema.TypedNode = RawNode{} func (RawNode) Type() schema.Type { return nil /*TODO:typelit*/ diff --git a/unixfs_test.go b/unixfs_test.go index 681f5ff..2c94d80 100644 --- a/unixfs_test.go +++ b/unixfs_test.go @@ -137,19 +137,19 @@ func TestUnixFSSelectorCopy(t *testing.T) { pbLinkBuilder := clink.LinkBuilder() // get a raw link builder - pbNode, ok := primeNd.(dagpb.PBNode) - link, err := pbNode.Links.LookupIndex(0) + links, err := primeNd.LookupString("Links") Wish(t, err, ShouldEqual, nil) - pbLink, ok := link.(dagpb.PBLink) - Wish(t, ok, ShouldEqual, true) - rawLink, err := pbLink.Hash.AsLink() + link, err := links.LookupIndex(0) Wish(t, err, ShouldEqual, nil) - rawLinkBuilder := rawLink.LinkBuilder() - Wish(t, ok, ShouldEqual, true) + rawLink, err := link.LookupString("Hash") + Wish(t, err, ShouldEqual, nil) + rawLinkLink, err := rawLink.AsLink() + Wish(t, err, ShouldEqual, nil) + rawLinkBuilder := rawLinkLink.LinkBuilder() // setup a node builder chooser with DagPB + Raw support - var defaultChooser traversal.NodeBuilderChooser = dagpb.AddDagPBSupportToChooser(func(ipld.Link, ipld.LinkContext) ipld.NodeBuilder { - return ipldfree.NodeBuilder() + var defaultChooser traversal.NodeBuilderChooser = dagpb.AddDagPBSupportToChooser(func(ipld.Link, ipld.LinkContext) (ipld.NodeBuilder, error) { + return ipldfree.NodeBuilder(), nil }) // create a selector for the whole UnixFS dag