27 lines
727 B
Go
27 lines
727 B
Go
package cidutil
|
|
|
|
import (
|
|
cid "github.com/ipfs/go-cid"
|
|
mhash "github.com/multiformats/go-multihash"
|
|
)
|
|
|
|
// InlineBuilder is a cid.Builder that will use the id multihash when the
|
|
// size of the content is no more than limit
|
|
type InlineBuilder struct {
|
|
cid.Builder // Parent Builder
|
|
Limit int // Limit (inclusive)
|
|
}
|
|
|
|
// WithCodec implements the cid.Builder interface
|
|
func (p InlineBuilder) WithCodec(c uint64) cid.Builder {
|
|
return InlineBuilder{p.Builder.WithCodec(c), p.Limit}
|
|
}
|
|
|
|
// Sum implements the cid.Builder interface
|
|
func (p InlineBuilder) Sum(data []byte) (cid.Cid, error) {
|
|
if len(data) > p.Limit {
|
|
return p.Builder.Sum(data)
|
|
}
|
|
return cid.V1Builder{Codec: p.GetCodec(), MhType: mhash.ID}.Sum(data)
|
|
}
|