70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package options
|
|
|
|
// DagPutSettings is a set of DagPut options.
|
|
type DagPutSettings struct {
|
|
InputEnc string
|
|
Kind string
|
|
Pin string
|
|
Hash string
|
|
}
|
|
|
|
// DagPutOption is a single DagPut option.
|
|
type DagPutOption func(opts *DagPutSettings) error
|
|
|
|
// DagPutOptions applies the given options to a DagPutSettings instance.
|
|
func DagPutOptions(opts ...DagPutOption) (*DagPutSettings, error) {
|
|
options := &DagPutSettings{
|
|
InputEnc: "json",
|
|
Kind: "cbor",
|
|
Pin: "false",
|
|
Hash: "sha2-256",
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
err := opt(options)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return options, nil
|
|
}
|
|
|
|
type dagOpts struct{}
|
|
|
|
var Dag dagOpts
|
|
|
|
// Pin is an option for Dag.Put which specifies whether to pin the added
|
|
// dags. Default is "false".
|
|
func (dagOpts) Pin(pin string) DagPutOption {
|
|
return func(opts *DagPutSettings) error {
|
|
opts.Pin = pin
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// InputEnc is an option for Dag.Put which specifies the input encoding of the
|
|
// data. Default is "json", most formats/codecs support "raw".
|
|
func (dagOpts) InputEnc(enc string) DagPutOption {
|
|
return func(opts *DagPutSettings) error {
|
|
opts.InputEnc = enc
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// Kind is an option for Dag.Put which specifies the format that the dag
|
|
// will be added as. Default is "cbor".
|
|
func (dagOpts) Kind(kind string) DagPutOption {
|
|
return func(opts *DagPutSettings) error {
|
|
opts.Kind = kind
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// Hash is an option for Dag.Put which specifies the hash function to use
|
|
func (dagOpts) Hash(hash string) DagPutOption {
|
|
return func(opts *DagPutSettings) error {
|
|
opts.Hash = hash
|
|
return nil
|
|
}
|
|
}
|